我正在尝试在项目中使用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();
}
当hostname =“localhost”时,它可以正常工作。
但是,如果我尝试从LAN上的其他PC连接并且hostname =“192.168.100.6”,它会抛出BrokerUnreachableException
- “没有指定的端点可以访问”
我错过了什么?
更新: 192.168.100.6(RabbitMQ服务器)上的防火墙已关闭。
答案 0 :(得分:4)
我认为问题在于UserName&密码。 按照this instruction安装并运行RabbitMQ服务器。
然后浏览http://localhost:15672/。这将打开RabbitMQ管理登录页面。添加用户即#34; abc"用密码。添加下面显示的所有标签,即"管理员,管理人员,政策制定者"。
现在将以下代码用于您的客户端 -
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);
}
}
}
希望,这将解决您的问题。
答案 1 :(得分:0)
检查端口号,我认为默认值为5672,但是我的Rabbitmq实例(使用docker)在5673上运行。要找到Rabbitmq当前正在使用的端口号(在docker中),请单击容器->检查>端口。 / p>
如果使用了错误的端口号-错误消息“ RabbitMQ.Client.Exceptions.BrokerUnreachableException”,内部异常为“ ExtendedSocketException:可能没有连接...”
如果使用了错误的用户名或密码-错误消息“ RabbitMQ.Client.Exceptions.BrokerUnreachableException”,内部异常为“ AuthenticationFailureException:ACCESS_REFUSED”