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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rabbitMq第四种模型--direct

發布時間:2024/1/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rabbitMq第四种模型--direct 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

在Direct模型下:隊列與交換機的綁定,不能是任意綁定了,
而是要指定一個RoutingKey(路由key)
消息的發送方在 向 Exchange發送消息時,
也必須指定消息的 RoutingKey。

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


生產者

package com.zuoan.routing;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.zuoan.utils.RabbitMQUtils;import java.io.IOException;/*** @Description: TODO* @Author: 黃石軍* @CreateTime: 2022/4/10 15:05* @Company:*/ public class Provider {public static void main(String[] args) throws IOException {Connection connection = RabbitMQUtils.getConnection("192.168.188.100");Channel channel = connection.createChannel();//參數一交換機名稱,參數二,路由模式channel.exchangeDeclare("logs_routing","direct");//發送消息String routingKey = "error";channel.basicPublish("logs_routing",routingKey,null,("這是directt發布的routingKey"+routingKey+"發送的消息").getBytes());//關閉資源RabbitMQUtils.closeChannelAndConnection(channel,connection);} }

消費者1

package com.zuoan.routing;import com.rabbitmq.client.*; import com.zuoan.utils.RabbitMQUtils;import java.io.IOException;/*** @Description: TODO* @Author: 黃石軍* @CreateTime: 2022/4/10 15:32* @Company:*/ public class Consumer {public static void main(String[] args) throws IOException {Connection connection = RabbitMQUtils.getConnection("192.168.188.100");Channel channel = connection.createChannel();//聲明交換機以及交換類型channel.exchangeDeclare("logs_routing","direct");//創建臨時隊列String queue = channel.queueDeclare().getQueue();//基于路由key綁定隊列和交換機channel.queueBind(queue,"logs_routing","error");//消費消息channel.basicConsume(queue,true,new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("消費者2"+new String(body));}});} }

消費者2

package com.zuoan.routing;import com.rabbitmq.client.*; import com.zuoan.utils.RabbitMQUtils;import java.io.IOException;/*** @Description: TODO* @Author: 黃石軍* @CreateTime: 2022/4/10 15:31* @Company:*/ public class Consumer1 {public static void main(String[] args) throws IOException {Connection connection = RabbitMQUtils.getConnection("192.168.188.100");Channel channel = connection.createChannel();channel.exchangeDeclare("logs_routing","direct");//創建臨時隊列String queue = channel.queueDeclare().getQueue();//臨時隊列綁定交換機channel.queueBind(queue,"logs_routing","info");channel.queueBind(queue,"logs_routing","error");channel.queueBind(queue,"logs_routing","waring");//消費消息channel.basicConsume(queue,true,new DefaultConsumer(channel){@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("消費者1"+new String(body));}});} }

根據工具類在我博客分類MQ第一章里
https://blog.csdn.net/weixin_45886609/article/details/124064801

總結

以上是生活随笔為你收集整理的rabbitMq第四种模型--direct的全部內容,希望文章能夠幫你解決所遇到的問題。

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