RabbitMQ direct交换机
生活随笔
收集整理的這篇文章主要介紹了
RabbitMQ direct交换机
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?在上面這張圖中,我們可以看到 X 綁定了兩個隊列,綁定類型是 direct。隊列 Q1 綁定鍵為 orange, 隊列 Q2 綁定鍵有兩個:一個綁定鍵為 black,另一個綁定鍵為 green.
在這種綁定情況下,生產者發布消息到 exchange 上,綁定鍵為 orange 的消息會被發布到隊列
Q1。綁定鍵為 blackgreen 和的消息會被發布到隊列 Q2,其他消息類型的消息將被丟棄。
多重綁定
?當然如果 exchange 的綁定類型是direct,但是它綁定的多個隊列的 key 如果都相同,在這種情況下雖然綁定類型是 direct 但是它表現的就和 fanout 有點類似了,就跟廣播差不多,如上圖所示。
實戰
?生產者
public class DirectLogs {// 交換機的名稱public static final String EXCHANGE_NAME = "direct_logs";public static void main(String[] args) throws Exception{Channel channel = RabbitMqUtils.getChannel();channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.DIRECT);Scanner scanner = new Scanner(System.in);while (scanner.hasNext()){String message = scanner.next();channel.basicPublish(EXCHANGE_NAME,"info",null,message.getBytes(StandardCharsets.UTF_8));System.out.println("生產者發出的消息:"+ message);}} }消費者
public class ReceiveLogsDirect01 {public static final String EXCHANGE_NAME = "direct_logs";public static void main(String[] args) throws Exception {Channel channel = RabbitMqUtils.getChannel();//聲明一個隊列channel.queueDeclare("console",false,false,false,null);//綁定交換機與隊列channel.queueBind("console",EXCHANGE_NAME,"info");channel.queueBind("console",EXCHANGE_NAME,"warning");DeliverCallback deliverCallback = (consumerTag, message) -> {System.out.println("ReceiveLogsDirect01控制臺打印接受到的消息:" + new String(message.getBody()));};channel.basicConsume("console",true,deliverCallback,consumerTag -> {});} } public class ReceiveLogsDirect02 {public static final String EXCHANGE_NAME = "direct_logs";public static void main(String[] args) throws Exception {Channel channel = RabbitMqUtils.getChannel();//聲明一個隊列channel.queueDeclare("disk",false,false,false,null);//綁定交換機與隊列channel.queueBind("disk",EXCHANGE_NAME,"error");DeliverCallback deliverCallback = (consumerTag, message) -> {System.out.println("ReceiveLogsDirect02控制臺打印接受到的消息:" + new String(message.getBody()));};channel.basicConsume("disk",true,deliverCallback,consumerTag -> {});} }總結
以上是生活随笔為你收集整理的RabbitMQ direct交换机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RabbitMQ fanout交换机(生
- 下一篇: RabbitMQ Topic交换机的作用