【发布时间】:2020-07-20 09:29:06
【问题描述】:
我已经使用this docker 映像在我的开发机器上设置了 RabbitMQ 服务器。
我使用下面的命令来设置我的容器
docker run -d --name my-rabbit -p 5672:15672 rabbitmq:3-management
下面是 docker ps 命令输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a40704b7f3a4 rabbitmq:3-management "docker-entrypoint.s…" 13 minutes ago Up 12 minutes 4369/tcp, 5671-5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5672->15672/tcp my-rabbit
可以通过http://localhost:5672 访问管理控制台,我可以使用默认用户名和密码(访客/访客)登录
下面是我的 .Net Core 代码
public RabbitMQMnager()
{
var factory = new ConnectionFactory();
factory.Port = 5672;
Uri uri = new Uri("amqp://guest:guest@localhost:5672/");
var connection = factory.CreateConnection();
//Below are values of different connection string parameters
factory.HostName = "localhost";
factory.UserName = "guest";
factory.Password = "guest";
factory.VirtualHost = "/";
factory.Port = 5672;
var channel = connection.CreateModel(); //<- Exception here
}
执行上述代码后,我遇到了异常。
RabbitMQ.Client.Exceptions.BrokerUnreachableException: 'None of the specified endpoints were reachable'
堆栈跟踪
This exception was originally thrown at this call stack:
RabbitMQ.Client.Framing.Impl.Connection.StartAndTune()
RabbitMQ.Client.Framing.Impl.Connection.Open(bool)
RabbitMQ.Client.Framing.Impl.Connection.Connection(RabbitMQ.Client.IConnectionFactory, bool,
RabbitMQ.Client.Impl.IFrameHandler, string)
RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(RabbitMQ.Client.Impl.IFrameHandler)
RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(RabbitMQ.Client.IEndpointResolver)
RabbitMQ.Client.ConnectionFactory.CreateConnection(RabbitMQ.Client.IEndpointResolver, string)
我发现了类似的问题,但提到的解决方案对我来说还不够。貌似跟docker和docker创建的网络有关系。
Refused connection to RabbitMQ when using docker link
其他细节
- .Net Core 3.1 应用程序
-
RabbitMQ.Client -> 5.1.2
更新 1
根据@ThisIsNoZaku 的回答,暴露额外的端口解决了我的问题。
docker run -d --hostname my-rabbit --name my-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management
【问题讨论】:
标签: docker .net-core rabbitmq rabbitmq-exchange