我正在尝试在一个项目中使用RabbitMQ。
我已经rabbitmq-server-3.4.4.exe
在IP地址为192.168.100.6的Win8(64位)PC上安装了RabbitMQ服务器。
我已经rabbitmqctl add_user username password
在RabbitMQ命令提示符中添加了一个使用的用户。
试图接收消息如下-
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();
}
Run Code Online (Sandbox Code Playgroud)
当hostname =“ localhost”时,它可以正常工作。
但是,如果我尝试从局域网上的另一台PC连接到主机名=“ 192.168.100.6”,则会抛出BrokerUnreachableException
-“没有指定的端点可访问”
我在这里错过了什么?
更新:192.168.100.6(RabbitMQ服务器)上的防火墙已关闭。
我认为问题出在用户名和密码上。请按照以下说明安装和运行RabbitMQ服务器。
然后浏览http:// localhost:15672 /。这将打开RabbitMQ管理登录页面。添加一个用户,即“ 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这能解决您的问题。
归档时间: |
|
查看次数: |
11207 次 |
最近记录: |