最近在玩RabbitMQ,爬坑发现自己对于MQ的整合和运作原理已经熟悉了,但是对于生产者和消费者的操作过程还不是很懂,导致消息队列装好配置好,框架整合好,突然发现还是不会写生产消费的业务,很是尴尬,所以就找了一下资料,了解了一下生产者和消费者的运转过程:
生产者
- 建立链接(Connection)
- 在链接(Connection)上开启一个信道(Channel)
- 声明一个交换机(Exchange)
- 声明一个队列(Queue)
- 使用路由键(RoutingKey)将队列(Queue)和交换机(Exchange)绑定起来
- 根据路由键(RoutingKey)发送消息到交换机(Exchange)
- [MQ]根据交换机(Exchange)和路由键(RoutingKey),将消息或存放到队列(Queue),或丢弃,或退回给生产者
- 关闭信道(Channel)
- 关闭链接(Connection)
消费者
- 建立链接(Connection)
- 在链接(Connection)上开启一个信道(Channel)
- 请求消费指定队列(Queue)的消息,并设置回调函数(onMessage)
- [MQ]将消息推送给消费者
- 消费者发送消息确定(Ack[acknowledge])
- [MQ]删除被确认的消息
- 关闭信道(Channel)
- 关闭链接(Connection)
可以注意到,无论是生产者还是消费者,第一步都是需要建立连接,再在连接的基础上建立信道。
生产者需要使用交换机来转发信息队列,其中消息绑定的标识就是路由键RoutingKey了。
消费者需要请求队列,消费队列消息,还能使用Ack向消息队列来返回确认信息。
生产和消费操作完毕后,都需要关闭信道再关闭连接,这点和数据库类似。
参考博文:https://blog.csdn.net/u014290054/article/details/78923894