【问题标题】:Docker Compose with RabbitMQ - Connection Refused when connecting from other service internallyDocker Compose with RabbitMQ - 在内部从其他服务连接时连接被拒绝
【发布时间】:2021-08-16 16:20:34
【问题描述】:

我将 docker compose 与 .net 核心服务 和 RabbitMQ 一起使用。我尝试从不同的服务连接到 rabbitMQ。我看过很多问题,但没有一个有效或有答案。

我知道您不应该使用 'localhost' 来连接其他服务,而是使用您在 docker-compose 文件中提供的名称。

我真的很好奇答案!

我尝试了什么

  1. 在 docker compose 文件中添加依赖
  2. 在 docker compose 文件中添加链接
  3. 添加重启:始终在 docker compose 文件中
  4. 将连接链接更改为:amqp://guest:guest@rabbitmq:5672
  5. 将连接链接更改为:amqp://guest:guest@rabbitmq/
  6. 多次清理和重建解决方案
  7. 更改了 docker compose 文件中的顺序。 RabbitMQ 现在是 Nr.1,之后是其他服务。
  8. 添加了容器名称
  9. 添加了主机名

这是我的 docker compose 文件

version: '3.0'

services:
  rabbitmq:
    container_name: rabbitmq
    hostname: rabbitmq
    image: rabbitmq:3-management
    ports:
      - "7100:15672"
      - "7101:5672"
    volumes:
      - rabbitmq:/rabbitmq
  dbPosts:
    image: mysql:latest
    ports:
        - 3307:3306
    environment:
        MYSQL_ROOT_PASSWORD: rootpassword
        MYSQL_DATABASE: postsdb
    volumes:
        - dbpostdata:/var/lib/mysql
  post-service:
    depends_on:
        - dbPosts
        - rabbitmq
    build:
      context: .
      dockerfile: post-service/Dockerfile
    ports:
      - "8081:80"
  
volumes:
    dbpostdata:
    rabbitmq:

如何建立连接:


if (_connection == null)
{
   ConnectionFactory factory = new ConnectionFactory()
      {
         Uri = new Uri("amqp://guest:guest@rabbitmq:5672"),
         AutomaticRecoveryEnabled = true
      };
   _connection = factory.CreateConnection();
}

但是当我尝试运行 docker-compose up 时,我收到以下错误消息:

Unhandled Exception: RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachable ---> RabbitMQ.Client.Exceptions.ConnectFailureException: Connection failed ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address

【问题讨论】:

  • 再次检查:您显示的代码片段是作为post-service 的一部分运行的,而不是来自您主机上的开发环境?
  • 连接的代码不是来自后期服务。这是一个不同的“项目”,一个名为“共享”的类库。我添加了从 post-service 到类库的引用。在后期服务中,我在启动时有这段代码:services.AddMessagePublishing("PostService");。从那以后,我认为它会建立联系

标签: c# .net docker docker-compose rabbitmq


【解决方案1】:

我解决了这个问题。我得到了错误的包版本...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 2022-01-02
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2017-08-05
    • 2020-09-08
    相关资源
    最近更新 更多