0
我開發了一個應用程序,在某些時候開始聚集一堆服務的信息。其中一些服務是通過SOAP接口同步調用的,其中一些服務異步工作 - 我必須發送請求到JMS隊列Q1,並在某個時候獲得Q2的答案。如何發送與異步服務並行的請求並在Java EE應用程序中收集響應?
問題是應用程序在一個線程中發送請求,並使用MDB(消息驅動Bean)處理響應。我的頭頂上的解決方案是將一些共享容器(如ConcurrentHashMap)中的聚合響應與一些correlationId一起存儲。所以當一個MDB獲得響應時,它會查看共享容器並將響應添加到相應的記錄中。
該應用程序在域HA模式下的WildFly AS上運行。
- 是否有一些問題可以用這種方法解決?就像容器將爲羣集中的每個節點實例化一樣。
- 或者我可以意外地處理這麼多的請求,我會存儲這麼多的響應,我會得到OutOfMemoryError?
- 這種問題的最佳方法是什麼?
將工作委託給ejb有什麼意義?無論如何,我無法承認這個消息,直到ejb完成。此外,我不能存儲id,因爲它不是用id的東西,它是計算的結果。所以我應該保存完整的對象。 – fantomasdnb
EJB處理是同步的,消息確認取決於EJB方法的結果。該ID是表的主鍵,由JMS消息發送並返回(MDB)。 –
雖然你的話有一些意義,但我不認爲你明白這個問題 – fantomasdnb