RabbitMQ常见的几种通讯方式

RabbitMQ常见的几种通讯方式,第1张

RabbitMQ常见的几种通讯方式 1、Hello-World

一个生产者,一个默认的交换机,一个队列,一个消费者

2、Work

一个生产者,一个默认的交换机,一个队列,两个消费者
默认情况下,如有有两个消费者,生产者for循环生产10条消息,RabbitMQ平均分配,每个消费者接收5条

3、Publish/Subscribe,广播模式

一个生产者,一个交换机,两个队列,两个消费者

声明一个Fanout类型的exchange,并且将exchange和queue绑定在一起,绑定的方式就是直接绑定。

让生产者创建一个exchange并且指定类型,和一个或多个队列绑定到一起。
例如:

//3. 创建exchange - 绑定某一个队列
//参数1: exchange的名称
//参数2: 指定exchange的类型  FANOUT - pubsub方式用 , DIRECT - Routing方式用 , TOPIC - Topics方式用
channel.exchangeDeclare("pubsub-exchange", BuiltinExchangeType.FANOUT);//FANOUT扇形广播
channel.queueBind("pubsub-queue1","pubsub-exchange","");
channel.queueBind("pubsub-queue2","pubsub-exchange","");
4、 Routing

一个生产者,一个交换机,两个队列,两个消费者

生产者在创建DIRECT类型的exchange后,根据RoutingKey去绑定相应的队列,并且在发送消息时,指定消息的具体RoutingKey即可。

例如:

//3. 创建exchange, routing-queue-error,routing-queue-info,
channel.exchangeDeclare("routing-exchange", BuiltinExchangeType.DIRECT);//DIRECT定向
channel.queueBind("routing-queue-error","routing-exchange","ERROR");
channel.queueBind("routing-queue-info","routing-exchange","INFO");

//4. 发布消息到exchange,同时指定路由的规则
channel.basicPublish("routing-exchange","ERROR",null,"ERROR".getBytes());
channel.basicPublish("routing-exchange","INFO",null,"INFO1".getBytes());
channel.basicPublish("routing-exchange","INFO",null,"INFO2".getBytes());
channel.basicPublish("routing-exchange","INFO",null,"INFO3".getBytes());
5、Topic,巧记,话题,啥啥话题都可以通通匹配

一个生产者,一个交换机,两个队列,两个消费者

生产者创建Topic的exchange并且绑定到队列中,这次绑定可以通过*和#关键字,对指定RoutingKey内容,编写时注意格式 xxx.xxx.xxx去编写, * 代表一个xxx,而#代表多个xxx.xxx,在发送消息时,指定具体的RoutingKey到底是什么。说白了就是匹配一个单词的情况,一般使用#号匹配0个或者多个单词,比如red是一个单词,这里说的是单词而不是字母!!!
1)Topic模式是最常用的模式,灵活,方便,强大;
2)使用Topic模式生产者在声明队列时需要制定消息到达队列方式为topic;
3)路由键和某模式匹配,主要有两种模糊匹配:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5669943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存