2016-12-26 98 views
0

我打算保持簡短,我們有一個產品使用BPM和內部隊列以及許多EJB(pojo實現)。我們決定將REST添加到產品中,並且我們將JAX-RS和Swagger歸入文檔。 現在,我們創建了一個指向異步場景的端點,當REST請求到達時,我們異步啓動BPMN流程,然後等待流程完成的約定的超時持續時間,以便我們可以並行地向內部隊列發送響應,它在BPMN流程完成處理時接收消息,然後可以構建REST響應。REST和阻塞隊列

我正在尋找一些企業模式或一些實用框架來幫助我實現這一點,而不是自己發明它。我知道駱駝有很多這樣的模式,但我不確定我在尋找JDK 1.6兼容框架中可用的模擬此同步行爲的東西。

我會喜歡RxJava或某些觀察者通知模式,可能沒有內部JMS隊列在線程之間傳遞消息。一個併發和線程安全的soilutuion是我正在尋找的。

回答

0

我會有像RxJava或某些觀察員通知程序模式的東西可能沒有內部JMS隊列在線程之間傳遞消息。一個併發和線程安全的解決方案是我正在尋找的。

如果您要使用JAX-RS,那麼您應該熟悉Asynchronous Server API。對於緩慢但同步的操作,您只需要dispatch a task to your executor,並在有結果時恢復掛起的請求。

另一種方法是將暫停的請求存儲在共享數據結構中,工作人員負責觀察已完成的流程,查找暫停的請求並分發響應。 Michael Barker的票務演示中的ResponseServlet顯示了這一基本思想(Barker的代碼使用servlet而不是JAX-RS,而Disruptor而不是RxJava,因此您需要翻譯)。

上異步響應處理的其他資源