RabbitMQ: создание динамических очередей в Direct Exchange

Я новичок в RabbitMQ, я только что просмотрел документы Rabbitmq (маршрутизация). Я совсем запутался между Exchange и ключами маршрутизации. Мое требование: я хочу динамически создавать несколько очередей. Пожалуйста, обратитесь к приведенной ниже схеме.

 Производитель отправляет задание на Exchange, а Exchange пересылает его в соответствующую очередь

Бывший. Допустим, если производитель создает сообщение для потребителя c3, то оно должно отправляться на Exchange и направляться только в очередь 3 и потребляться только C3. В настоящее время мне требуется только 3 очереди, в будущем это количество может увеличиться. так как справиться с этой ситуацией тоже.

Примечание. Я ссылаюсь на этот блог Exchange.

Я использовал Spring Hibernate вместе с Rabbitmq. приведенный ниже код показывает файл конфигурации прослушивателя Rabbit MQ.

<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/rabbit  
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">

<rabbit:connection-factory id="connectionFactory" host="xx.xx.10.181" username="admin" password="admin" />
<rabbit:admin connection-factory="connectionFactory" />

<!--  Create Queues -->
<rabbit:queue id="q1" name="q1.queue" durable="true" />
<rabbit:queue id="q2" name="q2.queue" durable="true"  />
<rabbit:queue id="q3" name="q3.queue" durable="true"  />

<!--create Exchange here -->
<rabbit:direct-exchange id="myExchange" name="MY Exchange">
    <rabbit:bindings>
         <rabbit:binding queue="q1" key="my.queue.q1" />
         <rabbit:binding queue="q2" key="my.queue.q2" />
         <rabbit:binding queue="q3" key="my.queue.q3" />
    </rabbit:bindings>
</rabbit:direct-exchange>

<!-- instantiate Listeners -->
<bean id="q1Listener" class="in.my.brocker.amqp.Q1Listener" />
<bean id="q2Listener" class="in.my.brocker.amqp.Q2Listener" />
<bean id="q3Listener" class="in.my.brocker.amqp.Q3Listener" />

<!-- glue the listener and myAnonymousQueue to the container-->
<rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory">
    <rabbit:listener ref="q1Listener" queues="q1" />
    <rabbit:listener ref="q2Listener" queues="q2" />
    <rabbit:listener ref="q3Listener" queues="q3" />
 </rabbit:listener-container>
</beans>

В приведенном выше файле rabbit-listener-context.xml я создал 3 очереди вместе с 3 классами слушателей. Моя цель состоит в том, чтобы доступ к Queue осуществлялся с помощью определенных ключей маршрутизации. Я хочу создать n-е количество очередей динамически? Как мы можем этого добиться?


person Morez    schedule 02.06.2015    source источник