我做了一個簡單的代理服務,它正在Message Broker上的隊列上進行偵聽。我已經成功實現了JMS事務,如果服務遇到任何錯誤,則消息成功回滾。默認情況下,最大重發次數爲10次,之後將消息發送到死信通道。WSO2 Message Broker事務回滾
問題:
我希望能夠改變以下兩種配置:
1)重新交付的最大數量
2)每個時間重新傳遞嘗試之間
我將在哪裏做這些配置,在我的{ESB_HOME}/repository/co nf/axis2/axis2.xml文件或在我的Message Broker中。
以下是我目前的axis2.xml的配置
<!--Uncomment this and configure as appropriate for JMS transport support with WSO2 MB 2.x.x -->
<transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
<parameter name="myTopicConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
<parameter name="transport.jms.SessionTransacted">true</parameter>
<parameter name="transport.jms.SessionAcknowledgement" locked="true">CLIENT_ACKNOWLEDGE</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">TopicConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">topic</parameter>
</parameter>
<parameter name="myQueueConnectionFactory" locked="false">
<parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
<parameter name="transport.jms.SessionTransacted">true</parameter>
<parameter name="transport.jms.SessionAcknowledgement" locked="true">CLIENT_ACKNOWLEDGE</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
</parameter>
<parameter name="default" locked="false">
<parameter name="java.naming.factory.initial" locked="false">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
<parameter name="java.naming.provider.url" locked="false">repository/conf/jndi.properties</parameter>
<parameter name="transport.jms.SessionTransacted">true</parameter>
<parameter name="transport.jms.SessionAcknowledgement" locked="true">CLIENT_ACKNOWLEDGE</parameter>
<parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">QueueConnectionFactory</parameter>
<parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
</parameter>
</transportReceiver>
注: 我使用WSO2 4.8.1和WSO2 Message Broker的2.2.0。
我發現:
我已經找到了解決方案,即再交付的最大數量第一個值,我們可以配置通過編輯這個數值在{$ MB_HOME}標籤/庫/ conf/advanced/andes-config.xml文件。
<maximumNumberOfMessageDeliveryAttempts>10</maximumNumberOfMessageDeliveryAttempts>
無法找到: 什麼,我無法找到是,我可以改變每個交還嘗試之間的延遲時間的配置。之前我使用ActiveMQ作爲消息代理,在其中我們可以在我們的{$ ESB_HOME} /repository/conf/axis2/axis2.xml文件中添加以下參數。
<parameter name="redeliveryPolicy.redeliveryDelay" locked="true">1200000</parameter>
我想在WSO2 Message Broker中做同樣的事情,但我無法找到任何配置。我嘗試了上面提到的參數,但它不適用於WSO2 MB。
在這種情況下,您可能需要使用消息存儲來配置這些參數。 [1] -http://wso2.com/library/articles/2011/12/implementing-store-forward-messaging-patterns-wso2esb-part-2/ – harsha89 2015-02-23 11:43:41
我正在使用WSO2 Message Broker(2.2.0)。我的問題是特定於此Message Broker。我知道我必須改變配置,但我沒有找到我可以做出上述調整的地方。或者你的意思是說,除此之外,我必須使用單獨的消息存儲。但這沒有任何意義?請原諒我的無知。 – 2015-02-23 11:57:48