use*_*747 6 rabbitmq docker rabbitmq-exchange .net-core
我已经使用此docker 映像在我的开发计算机上设置了 RabbitMQ 服务器。
\n\n我使用下面的命令来设置我的容器
\n\ndocker run -d --name my-rabbit -p 5672:15672 rabbitmq:3-management
以下是 docker ps 命令输出
\n\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\na40704b7f3a4 rabbitmq:3-management "docker-entrypoint.s\xe2\x80\xa6" 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访问,我可以使用默认用户名和密码( guest/guest )登录
\n\n下面是我的.Net Core 代码
\n\npublic RabbitMQMnager()\n {\n var factory = new ConnectionFactory();\n factory.Port = 5672;\n Uri uri = new Uri("amqp://guest:guest@localhost:5672/");\n\n var connection = factory.CreateConnection();\n\n //Below are values of different connection string parameters\n factory.HostName = "localhost";\n factory.UserName = "guest";\n factory.Password = "guest";\n factory.VirtualHost = "/";\n factory.Port = 5672;\n\n var channel = connection.CreateModel(); //<- Exception here\n }\nRun Code Online (Sandbox Code Playgroud)\n\n执行上面的代码后,我遇到以下异常。
\n\nRabbitMQ.Client.Exceptions.BrokerUnreachableException: \'None of the specified endpoints were reachable\'\nRun Code Online (Sandbox Code Playgroud)\n\n堆栈跟踪
\n\nThis exception was originally thrown at this call stack:\n RabbitMQ.Client.Framing.Impl.Connection.StartAndTune()\n RabbitMQ.Client.Framing.Impl.Connection.Open(bool)\n RabbitMQ.Client.Framing.Impl.Connection.Connection(RabbitMQ.Client.IConnectionFactory, bool, \n RabbitMQ.Client.Impl.IFrameHandler, string)\n RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(RabbitMQ.Client.Impl.IFrameHandler)\n RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(RabbitMQ.Client.IEndpointResolver)\n RabbitMQ.Client.ConnectionFactory.CreateConnection(RabbitMQ.Client.IEndpointResolver, string)
我发现了类似的问题,但提到的解决方案对我来说还不够。看起来和docker以及docker创建的网络有关系。
\n\n使用 docker link 时拒绝连接到 RabbitMQ
\n\n其他详情
\n\nRabbitMQ.Client -> 5.1.2
\n\n更新1
根据 @ThisIsNoZaku 的回答,暴露额外的端口解决了我的问题。
\n\ndocker run -d --hostname my-rabbit --name my-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management\nRun Code Online (Sandbox Code Playgroud)\n
使用 AMQP 客户端连接到 RabbitMQ 实例和连接到管理控制台 UI(15762在您已映射到5762主机上的容器中)的端口是不同的。当应用程序尝试将 AMQP 客户端指向管理端口时,它会失败,因为它不受支持:
\n\n\n可以使用 Web 浏览器访问管理 UI
\n\n...
\n\n请注意,UI 和 HTTP API 端口 \xe2\x80\x94 通常为 15672 \xe2\x80\x94 不支持 AMQP 0-9-1、AMQP 1.0、STOMP 或 MQTT 连接。这些客户端应使用单独的端口。
\n
您的 RabbitMQ 实例应该公开,并且您的客户端应连接到AMQP 的正确端口:
\n\n\n\n5672、5671:由不带或带 TLS 的 AMQP 0-9-1 和 1.0 客户端使用
\n
| 归档时间: |
|
| 查看次数: |
8813 次 |
| 最近记录: |