gpt4 book ai didi

python - 使用 docker-compose 在 Docker 容器之间发送 RabbitMq 消息

转载 作者:行者123 更新时间:2023-12-02 18:06:04 28 4
gpt4 key购买 nike

所以我的目标是让几个容器使用rabbitmq 消息相互交互(rabbitmq 服务器在一个单独的容器中)

兔子.py

class Rabbit:
host = 'rabbitmq-host'
userid = 'test'
password = 'test'


class Consumer(Rabbit):

def __init__(self, exchange_name):
self.exchange_name = exchange_name
self.connection = None
try:
credentials = pika.PlainCredentials(self.userid, self.password)
params = pika.ConnectionParameters(self.host, 5672, '/', credentials)
self.connection = pika.BlockingConnection(params)
except Exception as ex:
print(ex)
if self.connection is not None and self.connection.is_open:
self.connection.close()
raise ex

self.channel = self.connection.channel()

凭证测试:测试存在,我重新检查。

然后从另一个文件(main.py)创建消费者
c = Consumer('media')

docker-compose.yml
version: '3'
services:

rabbitmq-server:
image: "rabbitmq:3-management"
hostname: "rabbitmq-host"
environment:
RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
RABBITMQ_DEFAULT_USER: "test"
RABBITMQ_DEFAULT_PASS: "test"
RABBITMQ_DEFAULT_VHOST: "/"
ports:
- "15672:15672"
- "5672:5672"
labels:
NAME: "rabbitmq1"


info-getter:
build: ./info-getter
depends_on:
- rabbitmq-server
tty: true
ports:
- "3000:3000"

测试时,我在容器中运行 rabbitmq 服务器,但本地机器上的应用程序一切正常,但是当我运行“docker-compose up”时,出现以下异常:
info-getter_1      | 
info-getter_1 | Traceback (most recent call last):
info-getter_1 | File "main.py", line 10, in <module>
info-getter_1 | c = Consumer('media')
info-getter_1 | File "libs/rabbit.py", line 27, in __init__
info-getter_1 | raise ex
info-getter_1 | File "libs/rabbit.py", line 22, in __init__
info-getter_1 | self.connection = pika.BlockingConnection(params)
info-getter_1 | File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py", line 360, in __init__
info-getter_1 | self._impl = self._create_connection(parameters, _impl_class)
info-getter_1 | File "/usr/local/lib/python3.6/site-packages/pika/adapters/blocking_connection.py", line 451, in _create_connection
info-getter_1 | raise self._reap_last_connection_workflow_error(error)
info-getter_1 | pika.exceptions.AMQPConnectionError
services_info-getter_1 exited with code 1

我哪里错了?

另外我想补充一点,即使我指定了“depends_on”,在我运行“docker-compose up”之后,info-getter 日志出现在rabbitmq-server 日志之前。

最佳答案

主机必须是您在 docker-compose.yml 中定义的名称:

my-worker:
image: my-worker-image
restart: always
depends_on:
- my-rabbitmq
my-rabbitmq:
image: rabbitmq:management
ports:
- 5672:5672
- 15672:15672

然后在您的消费者(python)中:
connection = pika.BlockingConnection(pika.ConnectionParameters('my-rabbitmq'))

关于python - 使用 docker-compose 在 Docker 容器之间发送 RabbitMq 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56280607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com