适用于ActiveMQ 5.9的Apache Camel Broker组件
將Apache Camel嵌入ActiveMQ代理可以為使用Camel的集成功能擴展消息代理提供極大的靈活性。 Apache Camel路由的另一個好處是,如果使用activemq組件 ,則可以避免遠程連接到ActiveMQ的序列化和網絡開銷。 關于Apache ActiveMQ真正偉大的事情之一是,它與Apache Camel一起運行得很好 。
但是,如果您想更改流經ActiveMQ消息代理本身的消息的行為,則將僅限于附帶的ActiveMQ Broker 攔截器集 –或開發自己的Broker插件 –然后將其作為罐子引入類路徑中為ActiveMQ經紀人。
但是,真正有用的是將Interceptors和Camel結合在一起,從而使使用Camel路由配置Broker Interceptor更加容易,而這正是我們即將與代理 Camel Component一起發布的ActiveMQ 5.9所做的。 您可以將camel.xml文件包含到ActiveMQ代理配置中 ,然后,如果您希望將所有發送到隊列的消息都發送到Queue并將其發布到Topic,并在此過程中更改其優先級,則可以執行以下操作:
<route id="setPriority"><from uri="broker:topic:test.broker.>"/><setHeader headerName="JMSPriority"><constant>9</constant></setHeader><to uri="broker:queue:test.broker.component.queue"/> </route>需要注意的幾件事:
- 代理程序組件僅在攔截器啟動時才將攔截器添加到代理程序中-因此,代理程序組件在使用前將不會向運行中的代理程序添加任何開銷-這樣開銷將變得很小。
- 當代理已接收到消息時,但在消息被處理(持久化或路由到目的地)之前,您可以使用代理組件來攔截消息。
- CamelExchange上的in消息既是Camel消息,也是JMS消息(通過ActiveMQ從Stomp / MQTT / AMQP等途徑路由的消息始終轉換為JMS消息)。
- 您可以在目標上使用通配符來攔截來自與通配符匹配的目標的郵件。
- 截取之后,您必須將消息顯式發送回代理組件–這允許您丟棄選擇消息(不發送)–或像上述情況一樣–將消息重新路由到其他目標。
- 但是,有一個刻意的警告,您只能將消息發送到已被攔截的代理組件,即,從另一個組件(例如,文件)路由駱駝消息將導致錯誤。
在activemq-broker軟件包中添加了一些額外的類-在不使用JMX的情況下啟用正在運行的代理的視圖-并支持使用broker組件:
org.apache.activemq.broker.view.MessageBrokerView –提供檢索代理統計信息的方法,并從MessageBrokerView –您可以檢索特定目標的org.apache.activemq.broker.view.BrokerDestinationView 。 這意味著您可以通過執行以下操作來在代理內部添加靈活的路由-在目標隊列深度達到特定限制時路由消息:
<camelContext id="camel" trace="false" xmlns="http://camel.apache.org/schema/spring"><route id="routeAboveQueueLimitTest"><from uri="broker:queue:test.broker.queue"/><choice><when><spel>#{@destinationView.queueSize >= 100}</spel><to uri="broker:queue:test.broker.processLater"/></when><otherwise><to uri="broker:queue:test.broker.queue"/></otherwise></choice></route></camelContext><bean id="brokerView" class="org.apache.activemq.broker.view.MessageBrokerView"><constructor-arg value="testBroker"/></bean><bean id="destinationView" factory-bean="brokerView" factory-method="getDestinationView"><constructor-arg value="test.broker.component.route"/></bean> 這使用的是Camel Message Router模式-請注意在when子句中使用Spring表達式語言( spel )。
翻譯自: https://www.javacodegeeks.com/2013/09/apache-camel-broker-component-for-activemq-5-9.html
總結
以上是生活随笔為你收集整理的适用于ActiveMQ 5.9的Apache Camel Broker组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓证书安装在哪里(安卓证书安装)
- 下一篇: 惠州房屋备案价怎么查询(惠州房屋备案)