带有RabbitMQ的WSO2 EI-如何拒绝消息?

问题描述 投票:0回答:1

将WSO2EI 6.4.0与RabbitMQ一起用作入站传输,如文档RabbitMQ AMQP Transport中所述。

似乎运行良好,尽管只涵盖了“晴天”的情况。

需要保留消息顺序,在例外情况下,我们不能仅将消息重新排队回到队列中。如果后端服务不可用,我想回滚消息并尝试稍后再处理。据我了解,我们需要发送nack响应。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="test_mgs_processing_proxy"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="http,rabbitmq,local">
   <target>
      <inSequence>
         <log level="full">
            <property name="step" value="test_mgs_processing_proxy"/>
         </log>
         <property name="OUT_ONLY" value="true"/>
         <!-- simulate an exception has occured -->
         <property name="SET_ROLLBACK_ONLY" scope="axis2" value="true"/>
         <payloadFactory media-type="xml">
            <format>
               <step xmlns="">test_mgs_processing_proxy</step>
            </format>
            <args/>
         </payloadFactory>
      </inSequence>
   </target>
   <parameter name="rabbitmq.exchange.name">amq.topic</parameter>
   <parameter name="rabbitmq.queue.name">app_a</parameter>
   <parameter name="rabbitmq.connection.factory">AMQPConnectionFactory</parameter>
   <description/>
</proxy>

设置FORCE_SC_ACCEPTED将消息视为已使用。即使我们设置了SET_ROLLBACK_ONLY属性,该消息仍处于NACK状态,并且不会重新发送(至少不会很快发送)。

问题-使用RabbitMQ AMQP传输,有没有一种方法可以配置未处理消息的重新发送间隔?

rabbitmq wso2
1个回答
0
投票

似乎在WSO2 EI 6.4.0中是一个问题。 https://github.com/wso2/product-ei/issues/4739

使用入站端点时不存在此问题。仅当您将代理与Rabbitmq传输一起使用时,问题才存在。

© www.soinside.com 2019 - 2024. All rights reserved.