0

我有一个 Java 消费者应用程序,它连接到名为“my_exhange_foo”的 RabbitMQ (3.2.4) 不可删除扇出交换:

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但无法弄清楚在消费者方面声明交换的目的是什么。如果有人能对此有所了解,我将不胜感激。

4

1 回答 1

2

在消费者端声明交易所的目的是什么?

它允许在生产者进程启动之前启动消费者进程。没有它,如果消费者首先启动,那么它会出错。在使用生产系统时,首先启动消费者的灵活性很有用,它减少了由重新启动系统的固有时间引起的可能问题。

于 2015-05-01T09:17:57.267 回答