Найти в Дзене
drutsa2007

RabbitMQ - Python

Задача. Имеется 2 ПК, нужно соединить Python и RabbitMQ. Запуск контейнера: docker run -d --rm --name myRabbit --hostname myHostRabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:3-management Оправитель python: import pika
credentials = pika.PlainCredentials('user', 'password')
parameters = pika.ConnectionParameters(host='IP-103', port=5672, credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue='name-queue')
channel.basic_publish(exchange='', routing_key='name-queue', body='Hi, Consumer!')
connection.close() Получатель python: import pika
import traceback
import sys
credentials = pika.PlainCredentials('user', 'password')
parameters = pika.ConnectionParameters(host='IP-103', port=5672, credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue='name-queue')
print("Waiting fo

Задача. Имеется 2 ПК, нужно соединить Python и RabbitMQ.

  1. На первом Windows 11 с Python (ver. 3.10). IP-x.x.x.105. Нужно установить модуль pika: pip install pika
  2. Второй Debian (ver. 11) c установленным Docker (ver. 20.10.18), в котором развернут контейнер RabbitMQ (ver. 3.10.7) и RabbitMQ-Management (ver. 3). IP-x.x.x.103.

Запуск контейнера:

docker run -d --rm --name myRabbit --hostname myHostRabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:3-management

Оправитель python:

import pika

credentials = pika.PlainCredentials('user', 'password')
parameters = pika.ConnectionParameters(host='IP-103', port=5672, credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue='name-queue')

channel.basic_publish(exchange='', routing_key='name-queue', body='Hi, Consumer!')

connection.close()

Получатель python:

import pika
import traceback
import sys

credentials = pika.PlainCredentials('user', 'password')
parameters = pika.ConnectionParameters(host='IP-103', port=5672, credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()

channel.queue_declare(queue='name-queue')
print("Waiting for messages. To exit press CTRL+C")


def callback(ch, method, properties, body):
print(body)


channel.basic_consume('name-queue', callback)
try:
channel.start_consuming()
except KeyboardInterrupt:
channel.stop_consuming()
except Exception:
channel.stop_consuming()
traceback.print_exc(file=sys.stdout)

Второй вариант:

docker run -d -p 5672:5672 rabbitmq

Пользователь и пароль по умолчанию guest, guest.