RabbitMQ学习笔记
RabbitMQ学习笔记
操作基本模型
- Simple Queues简单队列
- 不足: 耦合性高,生产者一一对应消费者,队列名变更需要各处同时变更
- 模型如下:
- Work Queues工作队列
- 出现的原因:生产者发送毫不费力,消费者需要业务操作,【消费的慢,生产的快】
- 模型
- 分发方式:
- Round-Robin 轮询分发(默认的分发方式)
- 思想:所有消费者均分
- Fair-Dispatch 公平分发
- 思想:能者多劳
- 设置
- 对于发送者
ch.basicQos(1);
- 对于消费者要关闭自动应答
ch.basicQos(1); boolean autoAck = false; ch.basicConsume(QUEUE_NAME, autoAck, cs)
- 对于发送者
- Round-Robin 轮询分发(默认的分发方式)
- 消息应答与持久化
- 消息应答:
boolean autoAck = true
- true: 自动确认模式:一旦确认会自动从队列删除(杀死正在执行的消费者,就会丢失处理的消息)
- false: 手动:有消费者挂掉,就把消息发给另外的消费者,手动回执之后mq再删除
- 消息持久化:
rabbitmq挂了,消息就会消失,所以要存储起来。queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments
- 消息应答:
- Publish Subscribe订阅模式
- 解读:
- 一个生产者对多个消费者
- 每个消费者都有自己的队列
- 生产者没有直接把消息发送到队列,而是发到Exchanger中
- 每个队列都要绑定到Exchanger
- 生产者发送的消息经过交换机到达队列,可以实现一个消息被多个消费者消息
- 注意:
- 只有Queue能存储。Exchanger没有存储。
- 解读:
后续待更新