如何为测试容器的 RabbitMQContainer 启用 RabbitMQ 管理 api

how to enable RabbitMQ management api for RabbitMQContainer of 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, ".*", ".*", ".*");

但是容器启动失败,如果我去掉withCommand,它可以启动但是我无法访问管理API。 关于如何设置带有管理的 RabbitMQContainer 的任何建议 api?

使用 withCommand 将覆盖 Docker 图像的默认命令,因此会破坏与 RabbitMQContainer 实现的启动合同。

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

@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, ".*", ".*", ".*");