无法使用 Java 连接到 rabbitmq 实例

问题描述 投票:0回答:0

目前我的环境中有两个 rabbitmq docker 容器。其中一个将外部端口设置为 5672,另一个使用 5673。从我的 java 程序(未 dockerized)我试图通过使用 amqp-client maven 库连接到侦听 5673 的容器。 代码看起来像这样:

ConnectionFactory factory = new ConnectionFactory();
Connection connection = factory.newConnection("amqp://guest:guest@localhost:5673");

Channel channel = connection.createChannel();
channel.queueDeclare("region", true, false, false, null);

DefaultConsumer consumer =
    new DefaultConsumer(channel) {

      @Override
      public void handleConsumeOk(String consumerTag) {
        super.handleConsumeOk(consumerTag);
      }

      @Override
      public void handleDelivery(
          String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body)
          throws IOException {
        String message = new String(body, StandardCharsets.UTF_8);
        log.info(message);
      }
    };

channel.queueBind("region", "gas_region", "");
channel.basicConsume("region", true, consumer);

我遇到的问题是我的 Java 程序一直连接到 5672 实例,而不是监听 5673 的实例。我注意到,因为我在 5672 实例而不是另一个实例中看到创建的队列,而且我的程序也找不到5673 实例中配置的交换。 有人对可能出现的问题有任何想法吗?

我的 rabbitmq 实例的 docker compose 配置如下所示:

input_mb:
    image: rabbitmq:3-management
    hostname: rabbit1
    container_name: input_mb
    ports:
        - 5672:5672
        - 15672:15672
    volumes:
        - "./input_mb/rabbitmq.config:/etc/rabbitmq/rabbitmq.config"
        - "./input_mb/definitions.json:/etc/rabbitmq/definitions.json"
    networks:
        - common_network

output_mb:
    image: rabbitmq:3-management
    hostname: rabbit2
    container_name: output_mb
    ports:
        - 5673:5672
        - 15673:15672
    volumes:
        - "./output_mb/rabbitmq.config:/etc/rabbitmq/rabbitmq.config"
        - "./output_mb/definitions.json:/etc/rabbitmq/definitions.json"
    networks:
        - common_network
java docker rabbitmq
© www.soinside.com 2019 - 2024. All rights reserved.