目前,我的环境中有两个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
2条答案
按热度按时间vc9ivgsu1#
很显然我得说清楚
之前
我希望这对某人有帮助。
xsuvu9jc2#
您正在使用
newConnection
覆盖,该覆盖指定了连接名称:代码如果您希望使用AMQP URI,请在
ConnectionFactory
示例上使用setUri
方法:代码**注意:**Team RabbitMQ监控
rabbitmq-users
邮件列表,仅在StackOverflow上偶尔回答问题。