【问题标题】:WSO2 EI with RabbitMQ - how to reject a message?带有 RabbitMQ 的 WSO2 EI - 如何拒绝消息?
【发布时间】:2019-03-07 13:22:03
【问题描述】:

使用带有 RabbitMQ 的 WSO2EI 6.4.0 作为入站传输,如文档 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】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-28
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 2018-08-20
      • 1970-01-01
      相关资源
      最近更新 更多