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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringAMQP--DirectExchange

發布時間:2024/4/13 javascript 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringAMQP--DirectExchange 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Direct

?

在Fanout模式中,一條消息,會被所有訂閱的隊列都消費。但是,在某些場景下,我們希望不同的消息被不同的隊列消費。這時就要用到Direct類型的Exchange。

在Direct模型下:

  • 隊列與交換機的綁定,不能是任意綁定了,而是要指定一個RoutingKey(路由key)

  • 消息的發送方在 向 Exchange發送消息時,也必須指定消息的 RoutingKey。

  • Exchange不再把消息交給每一個綁定的隊列,而是根據消息的Routing Key進行判斷,只有隊列的Routingkey與消息的 Routing key完全一致,才會接收到消息

案例需求如下

  • 利用@RabbitListener聲明Exchange、Queue、RoutingKey

  • 在consumer服務中,編寫兩個消費者方法,分別監聽direct.queue1和direct.queue2

  • 在publisher中編寫測試方法,向itcast. direct發送消息

  • 基于注解聲明隊列和交換機

    基于@Bean的方式聲明隊列和交換機比較麻煩,Spring還提供了基于注解方式來聲明。

    在consumer的SpringRabbitListener中添加兩個消費者,同時基于注解來聲明隊列和交換機:

    @RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue1"),exchange = @Exchange(name = "leon.direct", type = ExchangeTypes.DIRECT),key = {"red", "blue"} )) public void listenDirectQueue1(String msg){System.out.println("消費者接收到direct.queue1的消息:【" + msg + "】"); }@RabbitListener(bindings = @QueueBinding(value = @Queue(name = "direct.queue2"),exchange = @Exchange(name = "leon.direct", type = ExchangeTypes.DIRECT),key = {"red", "yellow"} )) public void listenDirectQueue2(String msg){System.out.println("消費者接收到direct.queue2的消息:【" + msg + "】"); }

    消息發送

    在publisher服務的SpringAmqpTest類中添加測試方法:

    @Test public void testSendDirectExchange() {// 交換機名稱String exchangeName = "leon.direct";// 消息String message = "紅色警報!日本亂排核廢水,導致海洋生物變異,驚現哥斯拉!";// 發送消息rabbitTemplate.convertAndSend(exchangeName, "red", message); }

    總結

    描述下Direct交換機與Fanout交換機的差異?

    • Fanout交換機將消息路由給每一個與之綁定的隊列

    • Direct交換機根據RoutingKey判斷路由給哪個隊列

    • 如果多個隊列具有相同的RoutingKey,則與Fanout功能類似

    基于@RabbitListener注解聲明隊列和交換機有哪些常見注解?

    • @Queue

    • @Exchange

    總結

    以上是生活随笔為你收集整理的SpringAMQP--DirectExchange的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。