摘要:该问题经过一番试验,发现是消费者(consumer)程序逻辑错误导致:在消息处理的回调函数中多次ack或nack。 开启Python日志,并在回调函数中两次ack得到如下信息: 由unknown delivery tag很容易想到回调函数中唯二使用delivery tag的方法(ack/nack),
阅读全文
摘要:就像在日常生活中,事情有轻重缓急一样。我们对于需要处理的消息也有这样的需求。 例如重要的消息我要尽快的得到处理,当然我们可以给重要的消息开个“VIP通道”,但是VIP数量很多,并且VIP也分层次呢? 这时给消息加上优先级是一个很好的选择。 在RMQ中想要使用优先级特性需要的版本为3.5+。 然后我们
阅读全文
摘要:清空所有:nack 时将参数delivery-tag设为0,multiple设为1。 清空小于等于某delivery-tag的所有消息:nack 时将参数delivery-tag设为正数(介于1和9223372036854775807),multiple设为True。 注意:delivery-tag
阅读全文
摘要:对于有异常的消息我们可以有如下做法: 上边的第3个做法可以让这些异常的消息进入一个异常消息队列,等待我们的处理。 一个消息成为死信有以下几种原因: rejected - 也就是上边第2种做法 expired - 超过了队列设置的TTL(该值为消息在队列中停留最大时长,注意在达到TTL时消息为“Rea
阅读全文
摘要:开发环境中的rabbitmq总是会挂掉,rabbitmq的执行都是ssh远程登录执行命令: 认为加了&,进程会在后台执行不会受到终端的影响。所以不知道什么问题,后面想到使用strace查看该进程到底在退出时遇到了什么。 使用strace记录下日志,到第二天的时候果然RMQ再次倒下。查看日志,看到最后
阅读全文