Mule ESB многопоточных потребителей из RabbitMQ Queue - PullRequest
0 голосов
/ 01 ноября 2018

В моей конфигурации приложения MuleESB у меня есть очередь RabbitMQ, и я хочу использовать сообщения, используя многопоточность, где порядок не имеет значения.

У меня есть следующая конфигурация:

<amqp:connector name="RabbitMQMultiThread"  validateConnections="true" host="${rabbitmq_host}" port="${rabbitmq_port}" fallbackAddresses="${rabbitmq_fallback_addresses}" virtualHost="${rabbitmq_virtual_host}" username="${rabbitmq_username}" password="${rabbitmq_password}" ackMode="AMQP_AUTO" doc:name="AMQP Connector">
       <reconnect-forever frequency="30000"/>           
    </amqp:connector>

И я хочу использовать конфигурацию коннектора AMQP в своем потоке следующим образом:

<flow name="mule-flow">
 <amqp:inbound-endpoint connector-ref="RabbitMQMultiThread" responseTimeout="10000" exchange-pattern="request-response" doc:name="AMQP-0-9" queueName="myqueue"/>
        <logger message="got message" level="INFO" category="mycategory" doc:name="Logger"/> 
  <component doc:name="myPojo">
        <spring-object bean="myPojo"/>
    </component>             
 </flow>

Можно ли использовать сообщения из RabbitMQ, используя многопоточность в Mule, с помощью имеющейся у меня конфигурации потока?

1 Ответ

0 голосов
/ 01 ноября 2018

Да, Мул делает это автоматически. Справка: https://docs.mulesoft.com/mule-runtime/3.8/flow-processing-strategies#implicit-processing-strategies

Нам нужно было сохранить порядок сообщений, поэтому мы установили поток синхронным, а для numChannels и prefetch - 1.

<amqp:connector name="AMQP_Connector" validateConnections="true" host="${amqp.host}" port="${amqp.port}" username="${amqp.user}" password="${amqp.password}" numberOfChannels="1" prefetchCount="1" doc:name="AMQP-0-9 Connector" virtualHost="${amqp.virtualHost}">
...