Transactions WSO2消息代理事务回滚

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的配置 <

我制作了一个简单的代理服务,它监听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)。我的问题是针对这个消息代理的。我知道我必须改变配置,但我找不到一个地方,我可以做的改变,以调整上述。或者你的意思是说,除了这个,我还必须使用一个单独的消息存储。但这毫无意义?请原谅我的无知。