rabbitmq三---將所有訊息發給每個消費者
阿新 • • 發佈:2019-01-11
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:
接收端2: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 + "'"); }
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 + "'"); }