Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dotnetcore console app : rabbitmq with docker Connection refused 127.0.0.1:5672

rabbit connection from console app :

 var factory = new ConnectionFactory()
                {
                    HostName = Environment.GetEnvironmentVariable("RabbitMq/Host"),
                    UserName = Environment.GetEnvironmentVariable("RabbitMq/Username"),
                    Password = Environment.GetEnvironmentVariable("RabbitMq/Password")
                };

                using (var connection = factory.CreateConnection()) // GETTING ERROR HERE
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "rss",
                                         durable: fa...

I'm getting this error :

Unhandled Exception: RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: Connection refused 127.0.0.1:5672

my docker-compose.yml file :

version: '3'

services:
  message.api:
    image: message.api 
    build:
      context: ./message_api
      dockerfile: Dockerfile
    container_name: message.api
    environment:
      - "RabbitMq/Host=rabbit"
      - "RabbitMq/Username=guest"
      - "RabbitMq/Password=guest"
    depends_on:
      - rabbit

  rabbit:
    image: rabbitmq:3.7.2-management
    hostname: rabbit
    ports:
      - "15672:15672"
      - "5672:5672"

  rsscomparator:
    image: rsscomparator 
    build:
      context: ./rss_comparator_app
      dockerfile: Dockerfile
    container_name: rsscomparator
    environment:
      - "RabbitMq/Host=rabbit"
      - "RabbitMq/Username=guest"
      - "RabbitMq/Password=guest"
    depends_on:
      - rabbit

I'm using dotnetcore console app. When I use this app in docker I'm getting error. I can reach rabbitmq web browser(http://192.168.99.100:15672) but app can not reach.

like image 910
t. YILMAZ Avatar asked Jan 20 '18 21:01

t. YILMAZ


1 Answers

You are trying to connect from your container app to your rabbitmq app. You try to achieve this with 127.0.0.1:5672 in your console app container.

But this is pointing to your localhost inside this container, and not to your localhost on your host.

You are deploying your services using the same docker-compose without specifying network settings which means they are all deployed inside the same docker bridge network. This will allow you to let the containers communicate with each other using their container or service names.

So try to connect to rabbit:5672 instead of 127.0.0.1:5672. This name will be translated to the container IP (172.xx.xx.xx) which means you'll create a private connection between your containers.

like image 152
lvthillo Avatar answered Sep 27 '22 16:09

lvthillo