通过Spring的RabbitAdmin调整RabbitMQ HA队列

时间:2018-08-22 05:43:59

标签: rabbitmq spring-amqp spring-rabbitmq spring-rabbit rabbitmqctl

我想发现:有什么方法可以仅使用Java Spring代码来设置RabbitMQ镜像(HA队列)。 AFAIK有一个特殊的类RabbitAdmin用于处理此类配置问题,但无法确切地找到如何使用它来设置队列镜像的方法。是否可以以某种方式在Java Spring中配置HA队列?

先感谢

1 个答案:

答案 0 :(得分:2)

从RabbitMQ 3.0开始,您不再可以使用队列参数设置镜像:

Breaking things with RabbitMQ 3.0

您现在必须在代理上使用策略。

镜像队列策略

发生了什么变化??在RabbitMQ 3.0中,声明队列时,队列镜像不再受x-ha-policy参数的控制。您的应用程序可以继续声明此参数,但不会导致队列被镜像。相反,您可以声明一个或多个策略来控制哪些队列以及如何进行镜像。

为什么会更改?正如使用镜像队列的任何人都会告诉您的那样,要求应用程序知道哪些队列已镜像是很痛苦的。新方法将配置放入代理所属的代理中,并且还支持随时更改镜像策略。

我该怎么办??您需要确保您的队列仍然被镜像。有关完整的文档,请参见此处,但是如果您只想确保所有队列(具有自动生成名称的队列除外)都在所有节点之间进行镜像,请运行:

rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'

在早期版本中,您可以使用RabbitAdmin对其进行配置。