如何为 testcontainers 的 RabbitMQContainer 启用 RabbitMQ 管理 api

And*_*rew 1 java docker spring-boot testcontainers

我正在使用 RabbitMQContainer 进行集成测试,我进行了以下设置:

@Container
final static RabbitMQContainer rabbitMQContainer = new RabbitMQContainer(DockerImageName.parse(RABBITMQ_IMAGE))
            .withExposedPorts(5672, 15672)
            .withCommand("rabbitmq-plugins enable --offline rabbitmq_management")
            .withUser(RABBITMQ_USERNAME, RABBITMQ_PASSWORD, ImmutableSet.of("administrator"))
            .withPermission("/", RABBITMQ_USERNAME, ".*", ".*", ".*");
Run Code Online (Sandbox Code Playgroud)

但是容器无法启动,如果我删除withCommand,它可以启动,但我无法访问管理API。关于如何使用管理 API 设置 RabbitMQContainer 有什么建议吗?

Kev*_*tek 5

使用withCommand将覆盖 Docker 映像的默认命令,从而破坏与RabbitMQContainer实现的启动合同。

我不是 RabbitMQ 专家,但是您可以使用这样的配置并rabbitmq_management通过插件设置器启用吗?

@Container
final static RabbitMQContainer rabbitMQContainer = new RabbitMQContainer(DockerImageName.parse(RABBITMQ_IMAGE))
            .withExposedPorts(5672, 15672)
            .withPluginsEnabled("rabbitmq_management")
            .withUser(RABBITMQ_USERNAME, RABBITMQ_PASSWORD, ImmutableSet.of("administrator"))
            .withPermission("/", RABBITMQ_USERNAME, ".*", ".*", ".*");
Run Code Online (Sandbox Code Playgroud)