【发布时间】:2021-09-22 07:59:35
【问题描述】:
我在尝试连接到安装在 Linux 中的 rabbitmq 并且我的应用程序支持 docker 时收到错误“指定的端点都无法访问”。任何人都知道如何连接到 rabbitmq 或如何解决上述问题错误??
【问题讨论】:
-
“如何解决上述错误”做一些基本的网络故障排除。
-
请提供足够的代码,以便其他人更好地理解或重现问题。
我在尝试连接到安装在 Linux 中的 rabbitmq 并且我的应用程序支持 docker 时收到错误“指定的端点都无法访问”。任何人都知道如何连接到 rabbitmq 或如何解决上述问题错误??
【问题讨论】:
这意味着客户端无法访问服务器。尝试找出 RabbitMQ 端口是否暴露给主机(使用 netstat 检查打开的端口)。
netstat -an
如果端口没有通过 Docker 公开,你可以这样做:
ports:
- 5672:5672
- 15672:15672
如果它暴露了,我会检查你是否可以使用 netcat 或 telnet 连接到端口。如果这不起作用,则可能是 Linux 中的防火墙。
如果所有端口均可访问,请确保您的连接正确。您应该使用端口 5672 或至少在运行 Rabbit MQ 服务器的地方。 15672 是 HTTP API 端口和管理 UI。
请注意,UI 和 HTTP API 端口(通常为 15672)不支持 AMQP 0-9-1、AMQP 1.0、STOMP 或 MQTT 连接。这些客户端应该使用单独的端口。
连接字符串:
{
….
"Rabbit-MQ-AMPQ": "amqp://[username]:[password]@21.72.175.25"
….
}
您可以尝试不指定端口,看看会发生什么。
示例:
/*
using RabbitMQ.Models;
using RabbitMQ.Client;
using Microsoft.Extensions.Configuration;
using System.Text;
*/
public void Produce(string message)
{
var factory = new ConnectionFactory()
{
Uri = new Uri(configuration["Rabbit-MQ-AMPQ"]) //Through DI
};
using (var conn = factory.CreateConnection())
{
using (var channel = conn.CreateModel())
{
channel.QueueDeclare(queue: "messages_share",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "",
routingKey: "messages_share",
basicProperties: null,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
}
}
免责声明:检查您的 RabbitMQ 服务器配置,并了解为确认端口所做的工作的性质。
【讨论】: