2015-04-30 47 views
0

我有一个连接到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但无法弄清楚宣布交换的目的是在消费者身边。如果有人能够阐明这一点,我将不胜感激。

回答

2

在消费方声明交换的目的是什么?

它让我们在生产者进程启动之前启动消费者进程。没有它,如果消费者首先被启动,那么它会出错。在与生产系统一起工作时,首先具有启动消费者的灵活性非常有用,它可以减少由重新启动系统的固有时间所引起的可能问题。