Цель объявления обмена на потребителе RabbitMQ

У меня есть потребительское приложение Java, которое подключается к неудаляемому разветвленному обмену RabbitMQ (3.2.4) под названием «my_exhange_foo»:

Connection connection = connectionFactory.newConnection(consumerPool);
Channel channel = connection.createChannel();
channel.exchangeDeclare("my_exhange_foo", "fanout"); // is this necessary?

String queueName = channel.queueDeclare().getQueue();
channel.queueBind(queueName, "my_exhange_foo", "");

QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(queueName, true, consumer);

Клиентское приложение-потребитель получает сообщения независимо от того, объявлен обмен или нет.

Я следовал примеру ReceiveLogsDirect.java в этом руководстве https://www.rabbitmq.com/tutorials/tutorial-four-java.html

и прочитайте api, но не может понять, какова цель объявления обмена на стороне потребителя. Буду признателен, если кто-то может пролить свет на это.


person Javide    schedule 30.04.2015    source источник


Ответы (1)


какова цель объявления обмена на стороне потребителя?

Это позволяет запустить процесс-потребитель до того, как будет запущен процесс-производитель. Без него, если бы потребитель был запущен первым, произошла бы ошибка. Возможность запуска потребителя в первую очередь полезна при работе с производственной системой, поскольку она уменьшает возможные проблемы, вызванные неотъемлемым временем перезапуска систем.

person Chris K    schedule 01.05.2015