rabbitMQ使用的一点小结

版权声明:可自由转载。 https://blog.csdn.net/freeman1975/article/details/79307552
首先,queue这个概念,只在接收侧(消费者),在发送侧(生产者),只有一个routing_key的概念。
如何理解呢?这就是说,routing_key是全局的,你得定义为"queue.key"的形式,比如
MQ_ORDER_KEY = 'bill.order'
其次,no_ack=False和no_ack=True的区别
no_ack=false (此时为手动应答)
      在这种情况下,要求 consumer 在处理完接收到的 Basic.Deliver + Content-Header + Content-Body 之后才回复 Ack 。而这个 Ack 是 AMQP 协议中的 Basic.Ack 。此 Ack 的回复是和业务处理相关的,所以具体的回复时间应该要取决于业务处理的耗时。
no_ack=true (此时为自动应答)
      在这种情况下,consumer 会在接收到 Basic.Deliver + Content-Header + Content-Body 之后,立即回复 Ack 。而这个 Ack 是 TCP 协议中的 Ack 。此 Ack 的回复不关心 consumer 是否对接收到的数据进行了处理,当然也不关心处理数据所需要的耗时。
      切记, no_ack=True并不是不回复ack,而是不需要应用层来回复ack.

猜你喜欢

转载自blog.csdn.net/freeman1975/article/details/79307552