eigenLiu

Results 71 comments of eigenLiu

原因基本找到了,python的客户端每次调用recive只会看一个队列,即使该队列是空,也不立即切换队列,而是要等待invisible duration时长,而这个时长最低要求设置10秒,导致极限情况下,2master共16个队列,要160秒才轮询到那条有消息的队列。

python客户端的轮询策略十分的怪异,消费到1条消息立即切换队列,然后没消费到消息就等待一个duration再切。。

![Image](https://github.com/user-attachments/assets/964ac612-b515-40f9-8bff-23ba53ae8243) delay的4条消息在队列a0123

![Image](https://github.com/user-attachments/assets/53a5ed7a-e112-498c-b9be-38653860e499) 现在队列只轮询到b4,b5,每次轮询等10秒以上

终于轮询到a0123,才开始消费delay的消息 ![Image](https://github.com/user-attachments/assets/6ef9f48f-75a5-45b5-94fd-7bd66056a892)

问题代码位置,轮询: ![Image](https://github.com/user-attachments/assets/adfaddd9-13c7-41de-aca9-29d64c1ceafc)

更正一下,不是受invisible duration影响,而是simple customer对象构造时传入的await duration,实测至少也要5秒,问题依旧在,在队列为空时应该直接切换broker,而不是再轮询一遍已经没消息的broker的其他队列

轮询只需要在master broker之间切换即可,比如有2master,就ab的队列0之间切即可,没必要a01234567再b01234567

因为a0就已经能把a01234567的消息一次全部收到,b0同理

修改python.客户3个类可以搞定此问题 ![Image](https://github.com/user-attachments/assets/cafe4670-591e-43c4-9d25-5243a8a40308) 我找时间提一下pr