RabbitMQ 在本地主机上工作,但在 LAN 中抛出 BrokerUnreachableException -(.NET Windows 环境。)
RabbitMQ works in localhost, but throws BrokerUnreachableException in LAN - (.NET Windows environment.)
我正在尝试在一个项目中使用 RabbitMQ。
我已经在 Win8(64 位)PC 上安装了 RabbitMQ Server rabbitmq-server-3.4.4.exe
,其 IP 为 192.168.100.6。
我在 RabbitMQ 命令提示符中使用 rabbitmqctl add_user username password
添加了一个用户。
尝试接收消息如下-
ConnectionFactory factory = new ConnectionFactory();
factory.UserName = "skp";
factory.Password = "111";
factory.VirtualHost = "/";
factory.Protocol = Protocols.DefaultProtocol;
factory.HostName = "localhost";
factory.Port = AmqpTcpEndpoint.UseDefaultPort;
try
{
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer);
Console.WriteLine(" [*] Waiting for messages." +
"To exit press CTRL+C");
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
}
}
}
}
catch (RabbitMQ.Client.Exceptions.BrokerUnreachableException ex)
{
Console.WriteLine(ex.Message.ToString());
Console.WriteLine(ex.Message);
Console.ReadLine();
}
当主机名="localhost"时,它工作正常。
但是如果我尝试从 LAN 上的其他 PC 连接主机名 =“192.168.100.6”,它会抛出一个 BrokerUnreachableException
- "None of the specified endpoints were reachable"
我错过了什么?
更新:
192.168.100.6(RabbitMQ 服务器)上的防火墙已关闭。
我认为问题出在用户名和密码上。
按照 this instruction 安装和 运行 你的 RabbitMQ 服务器。
然后浏览http://localhost:15672/。这将打开 RabbitMQ 管理登录页面。添加一个用户,即 "abc" 和密码。添加下面显示的所有标签,即 "administrator,management, policymaker".
现在使用下面的代码给你的客户端-
var factory = new ConnectionFactory() { HostName = "192.168.100.6", Password = "123", UserName = "abc" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer);
Console.WriteLine(" [*] Waiting for messages." +
"To exit press CTRL+C");
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
}
}
}
希望这能解决您的问题。
检查端口号我认为默认是 5672 但我的 rabbitmq 实例(使用 docker)在 5673 上是 运行。要找到 rabbitmq 当前使用的端口号(在 docker) 单击容器 -> 检查 > 端口。
如果使用了错误的端口号 - 错误消息“RabbitMQ.Client.Exceptions.BrokerUnreachableException”,内部异常“ExtendedSocketException:无法连接......”
如果使用了错误的用户名或密码 - 错误消息“RabbitMQ.Client.Exceptions.BrokerUnreachableException”,内部异常“AuthenticationFailureException:ACCESS_REFUSED”
我正在尝试在一个项目中使用 RabbitMQ。
我已经在 Win8(64 位)PC 上安装了 RabbitMQ Server rabbitmq-server-3.4.4.exe
,其 IP 为 192.168.100.6。
我在 RabbitMQ 命令提示符中使用 rabbitmqctl add_user username password
添加了一个用户。
尝试接收消息如下-
ConnectionFactory factory = new ConnectionFactory();
factory.UserName = "skp";
factory.Password = "111";
factory.VirtualHost = "/";
factory.Protocol = Protocols.DefaultProtocol;
factory.HostName = "localhost";
factory.Port = AmqpTcpEndpoint.UseDefaultPort;
try
{
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer);
Console.WriteLine(" [*] Waiting for messages." +
"To exit press CTRL+C");
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
}
}
}
}
catch (RabbitMQ.Client.Exceptions.BrokerUnreachableException ex)
{
Console.WriteLine(ex.Message.ToString());
Console.WriteLine(ex.Message);
Console.ReadLine();
}
当主机名="localhost"时,它工作正常。
但是如果我尝试从 LAN 上的其他 PC 连接主机名 =“192.168.100.6”,它会抛出一个 BrokerUnreachableException
- "None of the specified endpoints were reachable"
我错过了什么?
更新: 192.168.100.6(RabbitMQ 服务器)上的防火墙已关闭。
我认为问题出在用户名和密码上。 按照 this instruction 安装和 运行 你的 RabbitMQ 服务器。
然后浏览http://localhost:15672/。这将打开 RabbitMQ 管理登录页面。添加一个用户,即 "abc" 和密码。添加下面显示的所有标签,即 "administrator,management, policymaker".
现在使用下面的代码给你的客户端-
var factory = new ConnectionFactory() { HostName = "192.168.100.6", Password = "123", UserName = "abc" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer);
Console.WriteLine(" [*] Waiting for messages." +
"To exit press CTRL+C");
while (true)
{
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
}
}
}
希望这能解决您的问题。
检查端口号我认为默认是 5672 但我的 rabbitmq 实例(使用 docker)在 5673 上是 运行。要找到 rabbitmq 当前使用的端口号(在 docker) 单击容器 -> 检查 > 端口。
如果使用了错误的端口号 - 错误消息“RabbitMQ.Client.Exceptions.BrokerUnreachableException”,内部异常“ExtendedSocketException:无法连接......”
如果使用了错误的用户名或密码 - 错误消息“RabbitMQ.Client.Exceptions.BrokerUnreachableException”,内部异常“AuthenticationFailureException:ACCESS_REFUSED”