![](/img/trans.png)
[英]How to configure Mule ESB (mule.bat) with different Java Version?
[英]How to persist a queue which contains Java Message in Mule ESB?
我在我的Mule應用程序中使用JMS端點和Apache ActiveMQ(我遵循了一個教程,但是不確定我是否依靠JMS作為端點做正確的事情)
<jms:activemq-connector name="jms-connector" brokerURL="${BrokerURL}" disableTemporaryReplyToDestinations="true" specification="1.1"/>
<jms:endpoint connector-ref="jms-connector" exchange-pattern="one-way" name="UnsortedOrders" queue="UnsortedOrders"/>
<jms:endpoint connector-ref="jms-connector" exchange-pattern="one-way" name="DestinationEMC" queue="DestinationEMC" />
<jms:endpoint connector-ref="jms-connector" exchange-pattern="one-way" name="DestinationOriginal" queue="DestinationOriginal"/>
在這一點上,我需要自動存儲(持久化在磁盤上)與之關聯的隊列,以使電源故障和其他故障不會殺死未完成的永恆過程,並且只要m子再次出現,該過程就會繼續。
我以前使用過帶有標記的ObjectStore,但是我不知道如何將其與JMS端點隊列綁定。 這就是我之前使用ObjectStore的方式:
<spring:bean id="objectStore" class="org.mule.util.store.QueuePersistenceObjectStore"/>
<until-successful objectStore-ref="objectStore" maxRetries="${MaximumRetry}" secondsBetweenRetries="${RetryInterval}">
<http:outbound-endpoint address="${ECMURL}" exchange-pattern="one-way">
<transformer ref="contentTypeTextXML"/>
</http:outbound-endpoint>
</until-successful>
您不能將對象存儲綁定到JMS端點。 那就是-如果您不重寫ObjectStore實現。
但是,您可以使用JMS持久性來實現相同的目的。 您必須使用交易。
<jms:inbound-endpoint queue="Destination.EMC" connector-ref="jms-connector">
<jms:transaction action="ALWAYS_BEGIN"/>
</jms:inbound-endpoint>
<http:outbound-endpoint address="${ECMURL}" exchange-pattern="one-way">
<transformer ref="contentTypeTextXML"/>
</http:outbound-endpoint>
因此,如果將消息放入隊列,它將嘗試發布到HTTP,如果失敗,它將回滾到隊列並重試。 進行所有嘗試並且調用仍然失敗后,該消息將回滾到一個死信隊列,默認為ActiveMQ.DLQ
。
要控制將重試消息的次數以及重試之間的延遲,可以使用重新交付策略 。
您可以將重新交付策略詳細信息添加到代理URL。 即
tcp://localhost:61616?jms.redeliveryPolicy.maximumRedeliveries=${MaximumRetry}&jms.redeliveryPolicy.redeliveryDelay=${RetryIntervalInMilliseconds}
在Mule ESB 博客上可以找到有關如何將ActiveMQ重新交付與Mule ESB一起使用的很好的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.