1. 程式人生 > >rabbitmq三---將所有訊息發給每個消費者

rabbitmq三---將所有訊息發給每個消費者

1:概念

exchange型別:direct(路由規則),topic(),headers(),fanout(釋出訂閱---傳送端群發,接收端(全收)繫結)

2:程式碼

傳送端:

channel.exchangeDeclare(EXCHANGE_NAME, "fanout");//宣告Exchange
for (int i = 0; i <= 2; i++) {  
    String message = "hello word!" + i;  
    channel.basicPublish(EXCHANGE_NAME, "", null, message.getBytes());  //fanout的情況下,佇列為預設,
    System.out.println(" [x] Sent '" + message + "'");  
}  
channel.close();  
connection.close();

接收端1:
channel.exchangeDeclare(EXCHANGE_NAME, "fanout");  
String queueName = "log-fb1";  //佇列1名稱
channel.queueDeclare(queueName, false, false, false, null);  
channel.queueBind(queueName, EXCHANGE_NAME, "");//把Queue、Exchange繫結
QueueingConsumer consumer = new QueueingConsumer(channel);  
channel.basicConsume(queueName, true, consumer);  
while (true) {  
     QueueingConsumer.Delivery delivery = consumer.nextDelivery();  
     String message = new String(delivery.getBody());  
     System.out.println(" [x] Received '" + message + "'");  
} 
接收端2:
channel.exchangeDeclare(EXCHANGE_NAME, "fanout");  
String queueName = "log-fb2";  //佇列2名稱
channel.queueDeclare(queueName, false, false, false, null);  
channel.queueBind(queueName, EXCHANGE_NAME, "");//把Queue、Exchange繫結
QueueingConsumer consumer = new QueueingConsumer(channel);  
channel.basicConsume(queueName, true, consumer);  
while (true) {  
     QueueingConsumer.Delivery delivery = consumer.nextDelivery();  
     String message = new String(delivery.getBody());  
     System.out.println(" [x] Received '" + message + "'");  
}