1、什么是 RabbitMQ
rabbitmq 是基于 AMQP (网络协议)的消息代理,使得发布者、消费者和消息代理可以在不同的设备上。队列,交换机和绑定统称为AMQP实体。某种意义上说AMQP的实体和路由规则是由应用本身定义的,而不是由消息代理定义。
举例:AMQP 的实体是根据,MQ 的虚拟机(账号和密码) 以及应用程序的设置的交换机名(exchange name)、队列(queue name) 和绑定的(routing key)组合而成一个 TCP 连接的信道。
A. 生产者发布消息
(发布消息) (根据路由(routeKey)将消息分发给队列)
生成者(发布者)===========》 交换机(exchange)===========》消息队列(queue)
B. 消费者获取消息
模式有两种:
1、 AMQP 代理将消息投递给消费者(简单模式、工作模式) push api
2、消费者根据设置的 Routingkey 自行去消息队列中获取 pull api
C. 消息确认
当开启了 “信息确认” 后,MQ 只有当接收到“确认签收”的回执后才会将消息从队列中删除
消费者接收消息后的签收方式:
1、自动签收
2、手动签收
D. 消息延期 (可用作数据定时更新)
这种消息会被放入到死信队列中
E、拒绝消息
当拒绝某条消息时,应用可以告诉消息代理如何处理这条消息——销毁它或者重新放入队列。当此队列只有一个消费者时,请确认不要由于拒绝消息并且选择了重新放入队列的行为而引起消息在同一个消费者身上无限循环的情况发生。