日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ direct交换机

發(fā)布時(shí)間:2024/4/13 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ direct交换机 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?在上面這張圖中,我們可以看到 X 綁定了兩個(gè)隊(duì)列,綁定類型是 direct。隊(duì)列 Q1 綁定鍵為 orange, 隊(duì)列 Q2 綁定鍵有兩個(gè):一個(gè)綁定鍵為 black,另一個(gè)綁定鍵為 green.

在這種綁定情況下,生產(chǎn)者發(fā)布消息到 exchange 上,綁定鍵為 orange 的消息會(huì)被發(fā)布到隊(duì)列
Q1。綁定鍵為 blackgreen 和的消息會(huì)被發(fā)布到隊(duì)列 Q2,其他消息類型的消息將被丟棄。

多重綁定

?當(dāng)然如果 exchange 的綁定類型是direct,但是它綁定的多個(gè)隊(duì)列的 key 如果都相同,在這種情況下雖然綁定類型是 direct 但是它表現(xiàn)的就和 fanout 有點(diǎn)類似了,就跟廣播差不多,如上圖所示。

實(shí)戰(zhàn)

?生產(chǎn)者

public class DirectLogs {// 交換機(jī)的名稱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("生產(chǎn)者發(fā)出的消息:"+ message);}} }

消費(fèi)者

public class ReceiveLogsDirect01 {public static final String EXCHANGE_NAME = "direct_logs";public static void main(String[] args) throws Exception {Channel channel = RabbitMqUtils.getChannel();//聲明一個(gè)隊(duì)列channel.queueDeclare("console",false,false,false,null);//綁定交換機(jī)與隊(duì)列channel.queueBind("console",EXCHANGE_NAME,"info");channel.queueBind("console",EXCHANGE_NAME,"warning");DeliverCallback deliverCallback = (consumerTag, message) -> {System.out.println("ReceiveLogsDirect01控制臺(tái)打印接受到的消息:" + 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();//聲明一個(gè)隊(duì)列channel.queueDeclare("disk",false,false,false,null);//綁定交換機(jī)與隊(duì)列channel.queueBind("disk",EXCHANGE_NAME,"error");DeliverCallback deliverCallback = (consumerTag, message) -> {System.out.println("ReceiveLogsDirect02控制臺(tái)打印接受到的消息:" + new String(message.getBody()));};channel.basicConsume("disk",true,deliverCallback,consumerTag -> {});} }

總結(jié)

以上是生活随笔為你收集整理的RabbitMQ direct交换机的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。