Приложение ядра .net не может подключиться к rabbitMQ (оба работают в докерной сети через docker-compose) - PullRequest
0 голосов
/ 26 июня 2019

Я изначально настроил это репо как два контейнера, один из которых обслуживает веб-интерфейс dotnetcore, а другой - консольное приложение dotnetcore, которое работает с веб-интерфейсом. Они оба были в одной и той же сети докеров, и все работало гладко, ударяя по webapi, используя имя контейнера в URL.

Затем я добавил RabbitMQ в качестве другого контейнера, и, хотя я могу использовать консоль rabbit-mgmt в своем веб-браузере, я не могу подключиться к Rabbit из приложения webAPI. См. Сообщение об ошибке ниже.

Я загрузил кодовую базу в github (ссылка ниже). Есть идеи, что я делаю не так? Что-то в docker compose или что-то в MessageService.cs? Я также вставляю ошибку ниже, но думаю, что проблема в том, что MessageService не может достичь контейнера rabbitMQ. Любая помощь будет принята с благодарностью.

https://github.com/matthew-harper/rabbit-docker-sample

publisher_api_1 | fail: Microsoft.AspNetCore.Server.Kestrel[13]

publisher_api_1 | Connection id "0HLNPLL1QJORV", Request id "0HLNPLL1QJORV:00000001": An unhandled exception was thrown by the application.

publisher_api_1 | RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> System.AggregateException: One or more errors occurred. (Connection failed) ---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address

publisher_api_1 | at System.Net.Dns.InternalGetHostByName(String hostName)

publisher_api_1 | at System.Net.Dns.ResolveCallback(Object context)

publisher_api_1 | --- End of stack trace from previous location where exception was thrown --

1 Ответ

0 голосов
/ 26 июня 2019

Разобрался, как только я разместил вопрос (естественно).Необходимо указать порт отдельно от имени хоста, например:

var factory = new ConnectionFactory() { HostName = "rabbitmq", Port = 5672 };
...