【发布时间】:2021-11-17 03:01:55
【问题描述】:
这是日志
MassTransit.RabbitMqTransport.Integration.ConnectionContextFactory.CreateConnection(ISupervisor supervisor)
[02:51:48 DBG] Connect: guest@localhost:5672/
[02:51:48 WRN] Connection Failed: rabbitmq://localhost/
RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable
RabbitMQ 控制面板显示已创建的交换和队列,当我发出发布请求时,我看到队列通过但随后在尝试响应时出现 MassTransit 超时。
这是我的 docker yaml 设置。我假设 MassTransit 从 appsettings.json 提取其设置以进行连接。
version: '3.4'
services:
hostedservice:
environment:
- ASPNETCORE_ENVIRONMENT=development
ports:
- "80"
rabbitmq3:
hostname: "rabbitmq"
image: rabbitmq:3-management
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
- RABBITMQ_DEFAULT_VHOST=/
ports:
# AMQP protocol port
- '5672:5672'
# HTTP management UI
- '15672:15672'
【问题讨论】:
-
您正试图从一个容器连接到另一个容器。在这种情况下,您应该使用容器主机名 (
rabbitmq),而不是localhost。 -
嗨,Alexey,我在 yaml 和 appsettings.json 中都将其更改为 rabbitmq,但 localhost 仍然出现在调试输出中。 [02:51:48 DBG] 连接:guest@localhost:5672/ [02:51:48 WRN] 连接失败:rabbitmq://localhost/
-
如果不配置 RMQ 传输,它将默认使用 localhost。这是一个正确配置的示例masstransit-project.com/usage/transports/…
-
好的,谢谢,我在 MassTransit Twitch Sample.Service 中使用 SagaStateMachine 设置。 github.com/MassTransit/Sample-Twitch/blob/master/src/… 为事件和状态机存储库添加 RabbitMq、MongoDB。它在非容器中运行良好,但是当我设置 docker yml 时,它给了我连接失败。我刚刚添加了 docker compose yaml ,如上所述。我假设 MassTrasnit 与 RabbitMQ 有连接,然后将 RabbitMQ 设置为作为容器进行通信?
-
抱歉还是没有成功。学到了很多东西,但无法克服这个障碍。
标签: masstransit