我目前正在開發一個使用異步處理分配的系統。信息傳輸是使用隊列完成的。所以一個進程會將信息放入Queue(並終止),另一個進程會將其提交併處理。我的實現使我面臨許多挑戰,我對每個人的方法對這些問題感興趣(在架構和庫方面)。Java異步處理
讓我畫這幅畫。比方說你有三個過程:
Process A -----> Process B
|
Process C <-----------|
所以進程A把一個消息隊列和結束,進程B拾取消息,處理它,並把它放在一個「回」隊列。 進程C接收消息並對其進行處理。
- 如何一個手柄方法B不聽或處理消息從隊列?是否有一些JMS類型的方法阻止生產者在消費者不活躍時提交消息?所以進程A將提交但拋出異常。
- 比方說工藝C必須獲得在X分鐘內答覆,但進程B已停止(因任何原因),有沒有一些強制執行的隊列超時機制?所以保證在X分鐘內回覆,將啓動進程C。
所有這些事情都可以使用死信來處理某種排隊嗎?我應該用定時器手動完成這一切,並檢查。我提到過JMS,但我對任何事情都很開放,實際上我使用Hazelcast作爲隊列。
請注意,這是更多的一個架構問題,在可用的Java技術和方法方面,我確實認爲這是一個適當的問題。
任何建議將不勝感激。
感謝
你看過阿卡嗎?演員聽起來像是你的情況的理想解決方案。儘管akka在scala中很流行,但它也適用於java。 – Albert 2012-02-03 08:19:49
我會看看阿卡。感謝大家的解決方案。 – Paul 2012-02-03 08:38:52