0

我有一个任务,我尝试在兔子队列中获取所有消息。我只需要获取,而不是消费。所以这是代码,我正在使用

def some_function_name() :
    connection = rabbitObj.get_connection()
    channel = rabbitObj.get_channel(connection)
    while True : 
        method_frame, header_frame, body = channel.basic_get(queue='error_queue', no_ack=False)
        if method_frame:
            #do some work
        else :
             break #breaking the loop

while(True):
    some_function_name()

当我运行此代码时,它第一次正常工作。我得到队列中的所有消息,并且所有消息都保持在“就绪”状态,但是当我第二次运行循环时,所有消息都变为“未确认”状态。

要求:每次我应该只获取消息,并且它们不应该不被确认。

第一个循环:

第一个循环

第二循环:

在此处输入图像描述

谁能帮助我,我做错了什么,或者我应该做些什么改变。

提前致谢 :)

编辑1:至于@BarrensZeppelin 的回答,如果我设置no_ack=True,所有的味精都会丢失。检查以下屏幕截图: 在此处输入图像描述

4

2 回答 2

0

我有一个解决方法,它正在工作。关闭兔子连接,消费后成功了。(虽然现在每次创建和关闭连接都需要时间)

def some_function_name() :
    connection = rabbitObj.get_connection()
    channel = rabbitObj.get_channel(connection)
    while True : 
        method_frame, header_frame, body = channel.basic_get(queue='error_queue', no_ack=False)
        if method_frame:
            #do some work
        else :
             break #breaking the loop
    rabbitObj.close_connection(connection)

while(True):
    some_function_name()
于 2017-09-12T09:32:39.583 回答
0

当您设置时,no_ack=False您特别告诉代理期待回复,这就是所有消息都变为未确认的原因。尝试设置no_ack=True

于 2017-09-12T09:10:33.970 回答