RabbitMQ++:常用的5种工作模式

1、点对点(简单)的队列

不需要交换机 一个生产者,一个消费者

2、工作队列(公平性)

不需要交换机

一个生产者,多个消费者,但是一个消息只会发送给一个队列(竞争的消费者模式)

默认是轮询,即会将消息轮流发给多个消费者,但这样对消费得比较慢的消费者不公平

可采用公平分配,即能者多劳channel.basicQos(1);// 限定:发送一条信息给消费者A,消费者A未反馈处理结果之前,不会再次发送信息给消费者

// 取消自动反馈 Aboolean autoAck = false;

// 接收信息 channel.basicConsume(QUEUE_NAME, autoAck, consumer);

// 反馈消息处理完毕 channel.basicAck(envelope.getDeliveryTag(), false);

3、发布/订阅

一个生产者,多个消费者

每一个消费者都有自己的一个队列

生产者没有直接发消息到队列中,而是发送到交换机

每个消费者的队列都绑定到交换机上

消息通过交换机到达每个消费者的队列

该模式就是Fanout Exchange(扇型交换机)将消息路由给绑定到它身上的所有队列

4、路由

生产者发送消息到交换机并指定一个路由key,消费者队列绑定到交换机时要制定路由key(key匹配就能接受消息,key不匹配就不能接受消息)

该模式采用Direct exchange(直连交换机)

5、主题(通配符)

此模式实在路由key模式的基础上,使用了通配符来管理消费者接收消息。生产者P发送消息到交换机X,交换机根据绑定队列的routing key的值进行通配符匹配

符号#:匹配一个或者多个词lazy.# 可以匹配lazy.irs或者lazy.irs.cor

符号*:只能匹配一个词lazy.* 可以匹配lazy.irs或者lazy.cor

该模式采用Topic exchange(主题交换机)

 

引:https://blog.csdn.net/weixin_39776991/article/details/111618735

posted @ 2022-06-09 15:10  coding++  阅读(184)  评论(0编辑  收藏  举报