我有一個場景,ActiveMQ內的路由邏輯到特定的工作池
我有相同的隊列配置爲SMS和EMAILS。
我希望ActiveMQ將消息路由到特定的使用者池,即如果它是SMS,則必須將其路由到工作線程池以用於SMS。
所以,如果我需要擴大SMS的數量,那麼我只需要增加SMS Worker Pool的池大小而不是EMAIL工作池。
我可以使用Apache Camel來實現我的需求的路由邏輯嗎?
我有一個場景,ActiveMQ內的路由邏輯到特定的工作池
我有相同的隊列配置爲SMS和EMAILS。
我希望ActiveMQ將消息路由到特定的使用者池,即如果它是SMS,則必須將其路由到工作線程池以用於SMS。
所以,如果我需要擴大SMS的數量,那麼我只需要增加SMS Worker Pool的池大小而不是EMAIL工作池。
我可以使用Apache Camel來實現我的需求的路由邏輯嗎?
有許多選擇,以支持該:
在每個消息中設置的報頭,以便消費者可以使用JMS選擇器來過濾消息。
使用ActiveMQ代理內的虛擬目的地(經紀人可以篩選基於消息頭值):http://activemq.apache.org/virtual-destinations.html
使用駱駝代理組件編寫自定義攔截處理程序:http://activemq.apache.org/broker-camel-component.html
使用作爲Nayan建議的Camel消息路由器或基於內容的路由器
對每個消息類型使用單獨的隊列(即隊列://OUTBOUND.SMS,隊列://OUTBOUND.EMAIL ..)
每個人都有好處和權衡。 #1,#4和#5不需要任何服務器端配置,這對保持經紀人維護儘可能低是方便的。
謝謝馬特:-)所以我已經決定使用虛擬目的地 – Sabya
謝謝,Sabya。很高興聽到你在路上。你能否「接受」我的回答? –
可以參考文檔 - http://camel.apache.org/message-router.html,http://camel.apache.org/content-based-router.html –