2017-01-16 74 views
0

我有一個場景,ActiveMQ內的路由邏輯到特定的工作池

我有相同的隊列配置爲SMS和EMAILS。

我希望ActiveMQ將消息路由到特定的使用者池,即如果它是SMS,則必須將其路由到工作線程池以用於SMS。

所以,如果我需要擴大SMS的數量,那麼我只需要增加SMS Worker Pool的池大小而不是EMAIL工作池。

我可以使用Apache Camel來實現我的需求的路由邏輯嗎?

+0

可以參考文檔 - http://camel.apache.org/message-router.html,http://camel.apache.org/content-based-router.html –

回答

0

有許多選擇,以支持該:

  1. 在每個消息中設置的報頭,以便消費者可以使用JMS選擇器來過濾消息。

  2. 使用ActiveMQ代理內的虛擬目的地(經紀人可以篩選基於消息頭值):http://activemq.apache.org/virtual-destinations.html

  3. 使用駱駝代理組件編寫自定義攔截處理程序:http://activemq.apache.org/broker-camel-component.html

  4. 使用作爲Nayan建議的Camel消息路由器或基於內容的路由器

  5. 對每個消息類型使用單獨的隊列(即隊列://OUTBOUND.SMS,隊列://OUTBOUND.EMAIL ..)

每個人都有好處和權衡。 #1,#4和#5不需要任何服務器端配置,這對保持經紀人維護儘可能低是方便的。

+0

謝謝馬特:-)所以我已經決定使用虛擬目的地 – Sabya

+0

謝謝,Sabya。很高興聽到你在路上。你能否「接受」我的回答? –