【发布时间】:2020-03-04 08:12:49
【问题描述】:
我正在尝试让 RabbitMQ 服务器正常工作。本地主机连接不是本教程的问题。但是每当我尝试通过网络执行相同操作时,我都无法让应用程序连接到代理。
发送:
var factory = new ConnectionFactory() { };
factory.HostName = "192.168.1.52";
factory.Port = 5672;
factory.UserName = "guest";
factory.Password = "guest";
factory.VirtualHost = "/";
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
string message = "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "",
routingKey: "hello",
basicProperties: null,
body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
RabbitMQ 实例在 IP 地址为 192.168.1.52 的不同 PC 上运行。 RabbitMQ 使用的默认端口是 5672,我还没有更改用户名或密码,所以仍然是 guest 和 guest。
收到:
var factory = new ConnectionFactory() { };
factory.HostName = "192.168.1.52";
factory.Port = 5672;
factory.UserName = "guest";
factory.Password = "guest";
factory.VirtualHost = "/";
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
};
channel.BasicConsume(queue: "hello",
autoAck: true,
consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
两个程序都抛出异常:
抛出异常:运行程序时 RabbitMQ.Client.dll 中出现“RabbitMQ.Client.Exceptions.ConnectFailureException”
但它不会破坏线程。一段时间后,威胁退出并出现以下错误:
ExtendedSocketException:连接尝试失败,因为连接方在一定时间后没有正确响应,或者连接失败,因为连接的主机没有响应。 192.168.1.52:5672
【问题讨论】:
-
愚蠢的问题,但是您检查过防火墙设置吗?
-
我不认为这是一个愚蠢的问题,而且很可能是罪魁祸首。
-
干杯,伙计们,这似乎有帮助。几个后续问题。我试图在允许的应用程序列表中找到 RabbitMQ 的实例,但没有一个只是简单地称为 RabbitMQ。但是,我确实找到了 erl (我认为这是需要允许的(lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-January/…)),但我已经允许了。但是暂时关闭防火墙后,它确实抛出了一个不同的错误,我将尝试解决下一个
-
@Titulum 这绝对是问题所在。在解决下一个错误(由使用访客访客登录引起)后,我能够创建连接并发送消息。您是否知道我需要添加防火墙接受列表才能在不关闭防火墙的情况下实现这一点?
标签: c# networking rabbitmq