我已经创建了一个简单的代理服务,它正在侦听Message Broker上的队列。我已经成功实现了JMS Transaction,如果服务遇到任何错误,则消息成功回滚。默认情况下,最大重新发送的数量为10,之后将消息发送到死信通道。
问题:
我希望能够更改以下两种配置:
1)最多重发次数
2)每次重新投放尝试之间的时间
我将在{ESB_HOME} /repository/conf/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} / repository / 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。
答案 0 :(得分:0)
据我所知,在WSO2 MB的情况下不能这样做。您必须在该消息存储库上设置消息存储库和消息处理器。当你有一个消息处理器时,它可以配置间隔和最大传送尝试。
(或者,您可以设置maxAckWaitTime,这意味着它将至少等待两次重新传递尝试之间的maxAckWaitTime&#39;秒)