現有方案:兩個應用程序正在使用隊列進行通信。 其中一個永遠是生產者,而其他永遠是消費者。可以通過輪詢Web服務調用來替換JMS消息嗎?
'生產者'生成和保存數據在自己的存儲。然後使用隊列將其發送給消費者。
我讀到的關於JMS消費者(和偵聽器)實現(使用Spring)的內容越多,我們就可以輕鬆地用Polling Webservice調用來替代消息傳遞。
這是因爲JMS Listeners所做的一切就是保持線程處於打開狀態,監聽隊列。所以如果你的JMS監聽器ConnectionFactory被設置爲有10個連接,你將有10個阻塞線程。
因此,而不是保持10個線程打開,而不是使用1個線程每隔30秒輪詢一次。該輪詢可以指示WebService在響應中發送100個數據項(或更多)。
好的,我明白你的意思,如果HTTP調用因爲某種原因失敗,數據就會丟失。與JMS相反,除非消費者承認它,否則數據不會丟失。有趣的是,在這種情況下,製片人始終存在數據。因此,HTTP呼叫失敗,消費者可能會在30秒內重試。 – rk2010
這是一個相當深的兔子洞。你應該看看你的要求,並決定你的解決方案是否滿足需求。雖然具有重試的簡單WS輪詢解決方案可能適用於您,但對於進行調用另一個WS的WS調用並更新兩個數據源的人可能無效。後者可能會更容易與JMS和JTA協同工作 – nsfyn55