【发布时间】:2019-07-08 14:28:42
【问题描述】:
我在一个项目中使用 RabbitMQ,并针对它运行我的集成测试。由于测试需要相互独立,我想在每次测试之前重置 RabbitMQ 实例,目前通过重新启动(自动创建的)RabbitMQ docker 容器来解决这个问题。但是,这非常慢(对于集成测试)。
我从this answer 知道,可以使用rabbitmqctl stop && rabbitmqctl reset && rabbitmqctl start 重置 rabbitmq-instance - 但在 docker-image 的情况下,停止信号会终止主容器进程(即 rabbitmq-server),它反过来导致 dockerd 杀死整个容器。
到目前为止,我发现的唯一解决方案是运行 management-api-plugin,遍历所有队列、交换、策略等并通过它删除它们 - 这反过来也需要一段时间,并且需要 management-plugin运行。
是否可以通过 AMQP、其他 API 端点或运行命令以编程方式重置正在运行的 rabbitmq 节点,而无需先停止它?
【问题讨论】:
标签: docker rabbitmq integration-testing