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