Я настроил сервер RabbitMQ на своем компьютере разработчика, используя это docker изображение.
Я использовал приведенную ниже команду для настройки моего контейнера
docker run -d --name my-rabbit -p 5672:15672 rabbitmq:3-management
Ниже приведен docker ps вывод команды
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a40704b7f3a4 rabbitmq:3-management "docker-entrypoint.s…" 13 minutes ago Up 12 minutes 4369/tcp, 5671-5672/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5672->15672/tcp my-rabbit
Консоль управления доступна по адресу http://localhost: 5672 , и я могу войти в систему, используя имя пользователя и пароль по умолчанию (гость / гость)
Ниже мой. Net Код ядра
public RabbitMQMnager()
{
var factory = new ConnectionFactory();
factory.Port = 5672;
Uri uri = new Uri("amqp://guest:guest@localhost:5672/");
var connection = factory.CreateConnection();
//Below are values of different connection string parameters
factory.HostName = "localhost";
factory.UserName = "guest";
factory.Password = "guest";
factory.VirtualHost = "/";
factory.Port = 5672;
var channel = connection.CreateModel(); //<- Exception here
}
После выполнения кода выше я получаю исключение ниже.
RabbitMQ.Client.Exceptions.BrokerUnreachableException: 'None of the specified endpoints were reachable'
Stack Trace
This exception was originally thrown at this call stack:
RabbitMQ.Client.Framing.Impl.Connection.StartAndTune()
RabbitMQ.Client.Framing.Impl.Connection.Open(bool)
RabbitMQ.Client.Framing.Impl.Connection.Connection(RabbitMQ.Client.IConnectionFactory, bool,
RabbitMQ.Client.Impl.IFrameHandler, string)
RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(RabbitMQ.Client.Impl.IFrameHandler)
RabbitMQ.Client.Framing.Impl.AutorecoveringConnection.Init(RabbitMQ.Client.IEndpointResolver)
RabbitMQ.Client.ConnectionFactory.CreateConnection(RabbitMQ.Client.IEndpointResolver, string)
Я нашел похожие вопросы, но решение упомянутое там не достаточно для меня. Похоже, что это как-то связано с docker и сетью, созданной docker.
Отказано в подключении к RabbitMQ при использовании docker link
Other детали
- . Net Приложение Core 3.1
RabbitMQ.Client -> 5.1.2
ОБНОВЛЕНИЕ 1
Согласно ответу @ThisIsNoZaku, раскрытие дополнительного порта решило мою проблему.
docker run -d --hostname my-rabbit --name my-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management