eigenLiu
eigenLiu
原因基本找到了,python的客户端每次调用recive只会看一个队列,即使该队列是空,也不立即切换队列,而是要等待invisible duration时长,而这个时长最低要求设置10秒,导致极限情况下,2master共16个队列,要160秒才轮询到那条有消息的队列。
python客户端的轮询策略十分的怪异,消费到1条消息立即切换队列,然后没消费到消息就等待一个duration再切。。
 delay的4条消息在队列a0123
 现在队列只轮询到b4,b5,每次轮询等10秒以上
终于轮询到a0123,才开始消费delay的消息 
问题代码位置,轮询: 
更正一下,不是受invisible duration影响,而是simple customer对象构造时传入的await duration,实测至少也要5秒,问题依旧在,在队列为空时应该直接切换broker,而不是再轮询一遍已经没消息的broker的其他队列
轮询只需要在master broker之间切换即可,比如有2master,就ab的队列0之间切即可,没必要a01234567再b01234567
因为a0就已经能把a01234567的消息一次全部收到,b0同理
修改python.客户3个类可以搞定此问题  我找时间提一下pr