当尝试连接到安装在Linux中的rabbitmq并且我的应用程序支持docker时,我得到一个错误'没有指定的端点可达'。有人知道如何连接到rabbitmq或如何解决上述错误吗??
这意味着客户端无法到达服务器。试着找出RabbitMQ端口是否暴露给主机(使用netstat检查打开的端口)。
netstat -an
如果端口没有通过Docker暴露,你可以这样做:
ports:
- 5672:5672
- 15672:15672
如果它是暴露的,我会检查你是否可以用netcat或telnet连接到端口。如果这不起作用,很可能是Linux中的防火墙。
如果所有端口都可访问,请确保您有正确的连接。您应该使用端口5672,或者至少是运行Rabbit MQ服务器的端口。15672为HTTP API端口和管理界面。
请注意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服务器配置,并了解正在做的事情的性质,以确认端口。