RabbitMQ 连接在本地主机上工作但不能通过网络

T J*_*ski 1 c# networking rabbitmq

我正在尝试让 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();
Run Code Online (Sandbox Code Playgroud)

RabbitMQ 实例运行在另一台 PC 上,IP 地址为 192.168.1.52。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();
    }
Run Code Online (Sandbox Code Playgroud)

两个程序都抛出异常:

运行程序时,RabbitMQ.Client.dll 中抛出异常:“RabbitMQ.Client.Exceptions.ConnectFailureException”

但它不会破坏线程。一段时间后,威胁存在并出现以下错误:

ExtendedSocketException:连接尝试失败,因为连接方在一定时间后没有正确响应,或者连接失败,因为连接的主机没有响应。192.168.1.52:5672

Tu-*_*ang 5

创建一个新的用户帐户,默认的来宾帐户仅限于本地主机。