无法连接远程RabbitMQ服务器

时间:2018-04-04 21:03:48

标签: c# rabbitmq remote-access masstransit

我正在创建一个客户端应用程序,其想法是将新消息发布到远程RabbitMQ队列。我正在使用MassTransit来创建这个客户端,我的代码看起来像这样:

    static IBusControl CreateBus()
    {
        return Bus.Factory.CreateUsingRabbitMq(x =>
        {             
            var host = x.Host(new Uri(ConfigurationManager.AppSettings["RabbitMQHost"]), h =>
            {
                h.Username("user");
                h.Password("password");
            });

        });
    }

    static IRequestClient<ISyncProject, IProjectSynced> CreateRequestClient(IBusControl busControl)
    {
        var serviceAddress = new Uri(ConfigurationManager.AppSettings["ServiceAddress"]);
        IRequestClient<ISyncProject, IProjectSynced> client =
            busControl.CreateRequestClient<ISyncProject, IProjectSynced>(serviceAddress, TimeSpan.FromDays(1));

        return client;
    }

    private static async Task MainLogic(IBusControl busControl)
    {
        IRequestClient<ISyncProject, IProjectSynced> client = CreateRequestClient(busControl);

       //I'm using the client here as I show below, this part is not important it works with localhost
        IProjectSynced response = await client.Request(new ProjecToSync() { OriginalOOMID = OriginalOOMID });
    }

配置文件如下所示:

<appSettings>
<add key="RabbitMQHost" value="rabbitmq://ServerName" />
<add key="ServiceQueueName" value="queueName" />
<add key="ServiceAddress" value="rabbitmq://ServerName/queueName" />
</appSettings>

我没有使用访客用户,我创建了一个新用户,我添加了管理员的所有权限 enter image description here

现在,如果我在运行RabbitMQ的同一服务器中运行客户端应用程序,并且ServerName更改为localhost,则此代码可以正常工作。如果我使用服务器的任何ServerName或IP地址在本地计算机上运行客户端,RabbitMQ将阻止我的连接:

enter image description here

我认为这必须是我需要在服务器中进行的一些配置,但到目前为止我还没有找到它。

我现在注意到的一件事是磁盘空间是红色的,并且已经创建了大量的通用交换 enter image description here

1 个答案:

答案 0 :(得分:1)

正如您的问题所示,从底部开始,您有一个连接,但它已被阻止。

The RabbitMQ documentation列出了阻止连接的一些情况。这些通常与代理机器本身的资源限制有关。在这种情况下,我们已经设法清楚地了解到经纪人可用的可用磁盘空间低于其低水位线。因此,所有连接都将被阻止,直到此条件得到解决(降低标记 - 不推荐,或增加可用空间)。