目的宣布在RabbitMQ的消费者
问题描述:
我有一个连接到RabbitMQ的(3.2.4)不可删除的扇出交换称为“my_exhange_foo”一个Java应用程序的消费者交换的:目的宣布在RabbitMQ的消费者
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但无法弄清楚宣布交换的目的是在消费者身边。如果有人能够阐明这一点,我将不胜感激。
答
在消费方声明交换的目的是什么?
它让我们在生产者进程启动之前启动消费者进程。没有它,如果消费者首先被启动,那么它会出错。在与生产系统一起工作时,首先具有启动消费者的灵活性非常有用,它可以减少由重新启动系统的固有时间所引起的可能问题。