1. 简单队列
一个生产者对应一个消费者, 有消息即取走
缺点: 耦合性高, 一个消费者一 一对应一个生产者
2. 工作队列
改进之后, 当然是一个生产者对应多个消费者
- 有轮询分发机制, 就是无论消费者处理业务逻辑快慢, 分发一样的消息给消费者
- 公平分发机制, 根据消费者处理业务逻辑的代码快慢分发, 根据手动返回ACK值, 关闭自动发送
问题: 返回机制防止了消息队列挂掉导致数据丢失,但服务器突然挂掉怎么办?
采用持久化数据, 声明队列时候持久化消息 durable = true
3. 订阅模式
在生产者后添加了一个交换机(exchange) 后面跟多个队列和消费者
4.路由模式
声明交换机是设置 direct
订阅模式生产者发送消息,就会把消息发送给所有的队列, 供所有的消费者获取, 但路由模式添加了路由键, 发布消息时候带上路由键, 在消费者中绑定队列时候也带路由键, 路由键相同时才会进入队列
5. 主题模式
声明交换机是设置 topic
将路由键和某种模式匹配
是在路由模式上的改进, 比如goods.#, 可以匹配goods.1, goods.aaa, goods.2 等路由键值