Для установки соединения с RabbitMQ и настройки распределения сообщений по очередям вам понадобится прежде всего установить библиотеку RabbitMQ для Python.
Установка RabbitMQ для Python может быть выполнена с помощью менеджера пакетов pip
. Откройте командную строку и введите следующую команду:
pip install pika
После успешной установки библиотеки pika
вы можете начать писать код для установки соединения с RabbitMQ.
Прежде всего, импортируйте модуль pika
:
import pika
Для установления соединения с RabbitMQ, создайте соответствующий объект connection
с помощью функции pika.BlockingConnection()
. В качестве аргументов передайте параметры подключения, такие как имя хоста и порт.
connection = pika.BlockingConnection( pika.ConnectionParameters(host='localhost', port=5672))
Замените 'localhost'
на имя вашего хоста RabbitMQ, а 5672
на соответствующий порт.
Для создания канала связи используйте метод connection.channel()
. Данный канал будет использоваться для отправки и получения сообщений.
channel = connection.channel()
При создании очереди, указывается имя и дополнительные параметры (если необходимо). Например, в следующем коде создается очередь с именем task_queue
, которая будет распределять сообщения между несколькими получателями:
channel.queue_declare(queue='task_queue', durable=True)
Обратите внимание на использование параметра durable
, который указывает, что очередь должна быть сохранена даже после перезапуска сервера.
После создания очереди, вы можете начать публиковать сообщения в эту очередь с помощью метода channel.publish()
. Например, отправка сообщения Hello, world!
:
channel.basic_publish(exchange='', routing_key='task_queue', body='Hello, world!')
В данном примере, параметр exchange
не указывается, что означает использование прямого обмена сообщениями. Аргумент routing_key
указывает на имя очереди, в которую будет отправлено сообщение.
Если вы хотите, чтобы сообщения автоматически распределялись между несколькими получателями, то укажите в опциях очереди параметр x-max-length-bytes
равным нулю:
channel.queue_declare(queue='task_queue', durable=True, arguments={'x-max-length-bytes': 0})
Это позволит RabbitMQ автоматически распределять сообщения между доступными потребителями.
Получение сообщений из очереди может быть выполнено с помощью метода basic_consume()
. Этот метод принимает в качестве аргументов имя callback-функции, которая будет вызвана при получении сообщения, и имя очереди.
В следующем примере показано, как получить сообщение из очереди с именем task_queue
и обработать его в callback-функции callback()
:
def callback(ch, method, properties, body): print("Received message: %r" % body) channel.basic_consume(queue='task_queue', on_message_callback=callback, auto_ack=True) channel.start_consuming()
В данном примере, параметр auto_ack
установлен в True
, что означает, что сообщения будут автоматически подтверждены при получении.
Таким образом, после установки соединения с RabbitMQ и настройки распределения сообщений по очередям, вы сможете успешно публиковать и получать сообщения между различными клиентами.