Как проверить, нет ли сообщения в RabbitMQ с Pika и Python - PullRequest
0 голосов
/ 05 октября 2018

Я читаю сообщения от RabbitMQ с библиотекой pika python.Чтение сообщений в цикле выполняется с помощью

connection = rpc.connect()
channel = connection.channel()
channel.basic_consume(rpc.consumeCallback, queue=FromQueue, no_ack=Ack)
channel.start_consuming()

. Это прекрасно работает.Но у меня также есть необходимость прочитать одно сообщение, которое я делаю с:

method, properties, body = channel.basic_get(queue=FromQueue)
rpc.consumeCallback(Channel=channel,Method=method, Properties=properties,Body=body)

Но когда в очереди нет сообщений, скрипт не работает.Как мне реализовать метод get_empty (), описанный здесь ?

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

вы можете проверить пустое тело следующим образом:

def callback(ch, method, properties, body):
    decodeBodyInfo = body.decode('utf-8')
    if decodeBodyInfo != '':
        cacheResult = decodeBodyInfo
        ch.stop_consuming()

Это так просто и легко использовать: D

0 голосов
/ 08 октября 2018

Я решил это временно с проверкой ответа вроде:

method, properties, body = channel.basic_get(queue=FromQueue)
if(method == None):
    ## queue is empty
...