首先,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.
rabbitMQ使用的一点小结
最新推荐文章于 2022-10-02 14:54:10 发布