我做了一个简单的代理服务,它正在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