2015-04-30 50 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

在消費方聲明交換的目的是什麼?

它讓我們在生產者進程啓動之前啓動消費者進程。沒有它,如果消費者首先被啓動,那麼它會出錯。在與生產系統一起工作時,首先具有啓動消費者的靈活性非常有用,它可以減少由重新啓動系統的固有時間所引起的可能問題。