来自控制台应用程序的兔子连接:
var factory = new ConnectionFactory()
{
HostName = Environment.GetEnvironmentVariable("RabbitMq/Host"),
UserName = Environment.GetEnvironmentVariable("RabbitMq/Username"),
Password = Environment.GetEnvironmentVariable("RabbitMq/Password")
};
using (var connection = factory.CreateConnection()) // GETTING ERROR HERE
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "rss",
durable: fa...
我收到此错误:
未处理的例外情况: RabbitMQ.Client.Exceptions.BrokerUnreachableException:无 指定的端点是可达的---> RabbitMQ.Client.Exceptions.ConnectFailureException:连接失败 ---> System.Net.Internals.SocketExceptionFactory + ExtendedSocketException: 连接被拒绝127.0.0.1:5672
我的docker-compose.yml文件:
version: '3'
services:
message.api:
image: message.api
build:
context: ./message_api
dockerfile: Dockerfile
container_name: message.api
environment:
- "RabbitMq/Host=rabbit"
- "RabbitMq/Username=guest"
- "RabbitMq/Password=guest"
depends_on:
- rabbit
rabbit:
image: rabbitmq:3.7.2-management
hostname: rabbit
ports:
- "15672:15672"
- "5672:5672"
rsscomparator:
image: rsscomparator
build:
context: ./rss_comparator_app
dockerfile: Dockerfile
container_name: rsscomparator
environment:
- "RabbitMq/Host=rabbit"
- "RabbitMq/Username=guest"
- "RabbitMq/Password=guest"
depends_on:
- rabbit
我使用的是dotnetcore控制台应用。当我在docker中使用这个应用程序时,我收到错误。我可以访问rabbitmq网络浏览器(http://192.168.99.100:15672),但应用无法访问。
答案 0 :(得分:2)
您正在尝试从容器应用程序连接到rabbitmq应用程序。
您尝试在控制台应用容器中使用127.0.0.1:5672
实现此目的。
但这指向此容器内的localhost,而不是指向主机上的localhost。
您使用相同的docker-compose部署服务而未指定网络设置,这意味着它们都部署在同一个docker bridge网络中。这将允许您使用容器或服务名称让容器相互通信。
因此,请尝试连接rabbit:5672
而不是127.0.0.1:5672
。此名称将转换为容器IP(172.xx.xx.xx),这意味着您将在容器之间创建专用连接。