WSO2 EI с RabbitMQ - как отклонить сообщение? - PullRequest
0 голосов
/ 07 марта 2019

Использование 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 можно ли настроить интервал повторной доставки необработанных сообщений?

...