尝试在没有 ack 的情况下获取 rabbit msg,但没有成功

Trying to GET rabbit msg without ack, but no success

我有一个任务,我试图在 rabbit 队列中获取所有消息。我只需要 GET,而不是 CONSUME。 所以这是代码,我正在使用

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()

当我运行这段代码时,它工作正常,首先time.I获取队列中的所有消息并且所有消息保持在'Ready'状态,但是当我运行 第二次循环,所有消息转为'Unacknowledged'状态。

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

第一个循环:

第二个循环:

任何人都可以帮助我,我做错了什么,或者我应该做些什么改变。

提前致谢:)

编辑 1: 至于@BarrensZeppelin 的回答,如果我设置 no_ack=True,所有消息都会丢失。检查下面的截图:

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

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

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()