Transactions WSO2消息代理事务回滚
我制作了一个简单的代理服务,它监听MessageBroker上的队列。我已经成功地实现了JMS事务,如果服务遇到任何错误,消息将成功回滚。默认情况下,最大重新传递次数为10次,然后将消息传递到死信通道 问题: 我希望能够更改以下两种配置: 1)重新交付的最大数量 2)每次重新交付尝试之间的时间 我将在哪里进行这些配置,在我的{ESB_HOME}/repository/conf/axis2/axis2.xml文件或MessageBroker中 以下是我当前对axis2.xml的配置Transactions WSO2消息代理事务回滚,transactions,jms,wso2,wso2esb,Transactions,Jms,Wso2,Wso2esb,我制作了一个简单的代理服务,它监听MessageBroker上的队列。我已经成功地实现了JMS事务,如果服务遇到任何错误,消息将成功回滚。默认情况下,最大重新传递次数为10次,然后将消息传递到死信通道 问题: 我希望能够更改以下两种配置: 1)重新交付的最大数量 2)每次重新交付尝试之间的时间 我将在哪里进行这些配置,在我的{ESB_HOME}/repository/conf/axis2/axis2.xml文件或MessageBroker中 以下是我当前对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>
org.wso2.andes.jndi.PropertiesFileInitialContextFactory
repository/conf/jndi.properties
真的
客户确认
主题连接工厂
话题
org.wso2.andes.jndi.PropertiesFileInitialContextFactory
repository/conf/jndi.properties
真的
客户确认
队列连接工厂
队列
org.wso2.andes.jndi.PropertiesFileInitialContextFactory
repository/conf/jndi.properties
真的
客户确认
队列连接工厂
队列
注意:
我正在使用WSO2 4.8.1和WSO2 Message Broker 2.2.0
我的发现:
我找到了第一个值的解决方案,即最大重新交付次数,我们可以通过在{$MB_HOME}/repository/conf/advanced/andes-config.xml文件中编辑以下标记来配置此值
<maximumNumberOfMessageDeliveryAttempts>10</maximumNumberOfMessageDeliveryAttempts>
<parameter name="redeliveryPolicy.redeliveryDelay" locked="true">1200000</parameter>
10
无法找到:
我找不到的是一个配置,通过它我可以更改每次重新交付尝试之间的延迟时间。以前我使用ActiveMQ作为消息代理,在其中我们可以向{$ESB_HOME}/repository/conf/axis2/axis2.xml文件添加以下参数
<maximumNumberOfMessageDeliveryAttempts>10</maximumNumberOfMessageDeliveryAttempts>
<parameter name="redeliveryPolicy.redeliveryDelay" locked="true">1200000</parameter>
1200000
我想在WSO2 Message Broker中使用相同的东西,但我找不到任何配置。我尝试了上面提到的参数,但它对WSO2 MB不起作用 据我所知,在WSO2 MB的情况下不能这样做。您必须在该消息存储上设置消息存储和消息处理器。当您有一个消息处理器时,它可以配置间隔和最大传递尝试次数
(或者,您可以设置maxAckWaitTime,这意味着它将在两次重新交付尝试之间至少等待“maxAckWaitTime”秒)在这种情况下,您可能需要使用message store,以便配置这些参数。[1] -我正在使用WSO2消息代理(2.2.0)。我的问题是针对这个消息代理的。我知道我必须改变配置,但我找不到一个地方,我可以做的改变,以调整上述。或者你的意思是说,除了这个,我还必须使用一个单独的消息存储。但这毫无意义?请原谅我的无知。