【发布时间】:2021-08-13 13:21:49
【问题描述】:
我有一个产生消息的示例 Spring Boot 应用程序:
@Scheduled(fixedRate = 10000)
public void test() throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello Rabbit!";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
System.out.println(" [x] Sent '" + message + "'");
}
}
它是码头化的:
FROM openjdk:11 as jdkbase
FROM jdkbase
COPY target/RabbitMQtester-0.0.1-SNAPSHOT.jar /run/RabbitMQtester-0.0.1-SNAPSHOT.jar
#ADD target/sfida-1.0.0.jar /run/sfida-1.0.0.jar
ENTRYPOINT java -Dfile.encoding=UTF-8 -jar /run/RabbitMQtester-0.0.1-SNAPSHOT.jar
我需要构建一个包含 RabbitMQ 和我的应用程序的图像。这是此任务的 docker-compose.yml:
version: "3.7"
services:
mytestapp:
build: .
rabbitmq:
image: rabbitmq:3.8.3-management-alpine
hostname: localhost
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- 5672:5672
- 15672:15672
当我启动生成的图像时,我可以从我的主机访问 rabbitMQ 管理页面。另外,我可以从主机运行我的应用程序,它会访问rabbitMQ。 但是我在容器/图像中的应用程序无法访问 RabbitMQ(它会引发“连接被拒绝(连接被拒绝)”错误) 我的配置有什么问题?
UPD:我也尝试将 docker-compose.yml 更改为此(并在我的应用程序中连接到 factory.setHost("rabbitmq");)
version: "3.8"
services:
mytestapp:
build: .
networks:
- some-net
rabbitmq:
image: rabbitmq:3.8.3-management-alpine
hostname: rabbitmq
networks:
- some-net
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- 5672:5672
- 15672:15672
networks:
some-net:
driver: bridge
对此:
version: "3.8"
services:
mytestapp:
build: .
rabbitmq:
image: rabbitmq:3.8.3-management-alpine
hostname: rabbitmq
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- 5672:5672
- 15672:15672
但结果是一样的……
【问题讨论】:
-
您是否在
docker-compose文件中桥接网络? -
另外你使用的是什么类型的操作系统?
-
1.这是我的整个 docker-compose.yml 文件; 2.MacOS 11.2.3
-
可能使用
localhost作为主机名会导致一些问题。尝试将 docker-compose 中的hostname和factory.setHost重命名为 rabbitmq-container 之类的东西 -
我已经尝试过了(请参阅 upd),但结果仍然相同,但出现错误:(
标签: java docker docker-compose rabbitmq