我在設計將在JBoss ESB上運行的發佈/訂閱服務時遇到問題。我需要能夠發佈消息給一個主題,這個主題可能有200個訂閱者會聽,而且他們會在收到消息後對這個消息做些什麼。我正在撰寫發佈服務和示例訂閱服務,以展示如何完成這項工作。在JBoss ESB中發佈訂閱者設計並保證交付
我需要保證交付給這些訂閱者。如果他們在一段時間內脫機並且在該時間內發佈消息,當他們重新聯機時,需要交付這些消息。所以我認爲這意味着他們需要成爲持久用戶(我的理解是主題不耐用,但用戶被定義爲耐用)。
我現在有一個發佈服務,它將ESB消息粘貼到ESB Aware Queue上,ESB Aware Queue調用NotifyTopic,它在ESB-Unaware主題上粘貼消息。我有一個擁有ESB-Unaware主題監聽器的訂閱者,並且使用httprouter調用webservice,它將消息發送給我的web服務進行處理。這一切都有效 - 除非我的web服務處於脫機狀態(我必須弄清楚如何處理該情況,但我還沒有),或者如果我的ESB訂閱服務處於脫機狀態(我通過卸載它進行測試,發送一個很少發佈消息,並重新安裝它 - 沒有積壓的消息發送到我的web服務)。
我很確定我沒有正確地建立用戶。我認爲我需要訂閱者部署在ESB上。我不確定它是如何工作的,否則它將如何部署在不同的服務器上,然後仍然連接到ESB(試圖避免混淆SSL,防火牆,端口等)。我認爲在ESB上安裝用戶將是最好的選擇。但我不知道如何讓它持久/有保證交付。
如果訂戶有不同的clientId,我不能有多個? – Michaela
@Michaela對不起,我解釋了引用的文本不正確。所以是的,它似乎工作:*相同*客戶端ID,但*不同*訂閱名稱具有唯一的身份。 – Beryllium