Как использовать сообщения от RabbitMQ

Начните с импорта библиотеки.

 from amqpstorm import Connection

 

При использовании сообщений сначала нужно определить функцию для обработки входящих сообщений. Это может быть любой вызываемой функции, и должен принимать объект сообщения, или кортеж сообщения ( в зависимости от to_tuple параметра , определенного в start_consuming ).

Помимо обработки данных из входящего сообщения, мы также должны подтвердить или отклонить сообщение. Это важно, так как мы должны сообщить RabbitMQ, что мы правильно получили и обработали сообщение.

 def on_message(message):
    """This function is called on message received.

    :param message: Delivered message.
    :return:
    """
    print("Message:", message.body)

    # Acknowledge that we handled the message without any issues.
    message.ack()

    # Reject the message.
    # message.reject()

    # Reject the message, and put it back in the queue.
    # message.reject(requeue=True)

 

Далее нам нужно настроить соединение с сервером RabbitMQ.

 connection = Connection('127.0.0.1', 'guest', 'guest')

 

После этого нам нужно настроить канал. Каждое соединение может иметь несколько каналов, и, как правило, при выполнении многопоточных задач рекомендуется (но не обязательно) иметь один канал на поток.

 channel = connection.channel()

 

После того, как мы настроили наш канал, нам нужно сообщить RabbitMQ, что мы хотим начать принимать сообщения. В этом случае мы будем использовать нашу ранее определенную on_message функцию , чтобы обрабатывать все наши потребляемые сообщения.

Очередь мы будем слушать на сервере RabbitMQ будет simple_queue , и мы также говорят RabbitMQ , что мы будем признающее все входящие сообщения , как только мы сделали с ними.

 channel.basic.consume(callback=on_message, queue='simple_queue', no_ack=False)

 

Наконец, нам нужно запустить цикл ввода-вывода, чтобы начать обработку сообщений, доставляемых сервером RabbitMQ.

 channel.start_consuming(to_tuple=False)