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