2015-09-28 53 views
2

我正在創建一個可讓多個客戶發送消息的託管系統。我正在JMS隊列中接收消息。如何在WSO2 ESB中監聽多個隊列

現在,所有處理都以類似的方式完成,我希望我的進程輪詢所有傳入隊列中的消息並處理它們。 WSO2 ESB中有一種方法可以訂閱多個隊列嗎?

如果不可行,解決方法是爲每個隊列創建一個單獨的偵聽器進程,並將該郵件發送到中央處理隊列。但這似乎是一個不太乾淨的解決方案(我認爲它會比聽多個隊列更糟糕)。

對此的任何想法?

+0

是否可以對activemq服務器進行更改?可能是你可以在[activemq](https://activemq.apache.org/artemis/docs/1.0.0/diverts.html)中創建轉向單個隊列。 – Rohit

回答

0

您可以定義一個包含所有必需邏輯的序列,然後從多個代理服務(每個都監聽特定隊列)調用它。否則,您可以嘗試類似this sample

+0

您的建議與我描述的解決方法相同......但我不想爲每個新客戶添加額外的服務。 –

1

如果對activeMQ服務器的更改是可能的,即,如果OP能夠影響到服務器的配置,像ActiveMQ轉移這樣的東西可以做到這一點。

<divert name="prices-divert"> 
    <address>jms.queue.ABC</address> 
    <forwarding-address>jms.queue.theone</forwarding-address> 
    <exclusive>true</exclusive> 
</divert> 

<divert name="prices-divert"> 
    <address>jms.queue.xyz</address> 
    <forwarding-address>jms.queue.theone</forwarding-address> 
    <exclusive>true</exclusive> 
</divert> 

基本上,多個轉接會聚從多個隊列中的消息到單個隊列。這種方法比讀取和寫入單個隊列具有優勢 - 正如OP所提及的那樣,並且在我看來,它可以很好地擴展,因爲它是內置功能。

+0

有趣的想法,我會進一步調查。 –