Ошибка соединения RabbitMQ C #: ни одна из указанных конечных точек не была доступна - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть этот код:

public class Rabbit
    {
        public IConnection GetConnection()
        {
            ConnectionFactory connectionFactory = new ConnectionFactory();
            Uri uri = new Uri("amqp://login:password@1.2.3.4:5672/host");
            connectionFactory.Uri = uri;
            return connectionFactory.CreateConnection();
        }

        public  void Send(string queue, string data)
        {
            using (IConnection connection = GetConnection())
            {
                using (IModel channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue, false, false, false, null);
                    channel.BasicPublish(string.Empty, queue, null, Encoding.UTF8.GetBytes(data));

                }
            }
        }

        public  string  Receive(string queue)
        {
            using (IConnection connection = GetConnection())
            {
                using (IModel channelconsumer = connection.CreateModel())
                {
                    //channelconsumer.QueueDeclare(queue, false, false, false, null);
                    BasicGetResult result = channelconsumer.BasicGet(queue, true);
                    if (result != null)
                    {
                        string data = Encoding.UTF8.GetString(result.Body);
                        Console.WriteLine(data);
                        return data;
                    } else
                    {
                        return null;
                    }
                }
            }
        }
    }

И я использую его:

var rabbit = new Rabbit();
rabbit.Send("name.sample.example", json); 

Когда я запускаю этот код, у меня появляется ошибка:

RabbitMQ.Client.Exceptions.BrokerUnreachableException: «Ни одна из указанных конечных точек не была доступна»

в строке:

return connectionFactory.CreateConnection();

У меня есть логин, пароль на 100% правильный.Как это исправить?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Я также столкнулся с той же проблемой, кредиты, которые я использовал, не имели доступа.

У этого пользователя нет прав доступа к каким-либо виртуальным хостам.Используйте «Установить разрешение» ниже, чтобы предоставить разрешение на доступ к виртуальным хостам

, поэтому я добавил свое имя пользователя в RabitMQ и предоставил доступ к нему.Теперь все хорошо.По умолчанию у вас есть учетные данные гостя / гостя в RabitMQ

0 голосов
/ 17 декабря 2018

Запишите URI без суффикса "host":

Uri uri = new Uri("amqp://login:password@1.2.3.4:5672/");

Объяснение: Последний заполнитель в URI схемы amqp зарезервирован для указания виртуального хоста - в RabbitMQ виртуальный хост является логической группировкойресурсов (таких как биржи и очереди), предназначенных для поддержки разделения ресурсов для разных клиентов, которые используют один и тот же экземпляр RabbitMQ.По умолчанию определяется только неназванный виртуальный хост "/".Соединения с несуществующими именами виртуальных хостов завершатся неудачно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...