RabbitMQ 通过 Spring 的 RabbitAdmin 调整 HA 队列
RabbitMQ tuning HA queues via Spring's RabbitAdmin
我想知道:是否有任何方法可以仅使用 Java Spring 代码来设置 RabbitMQ 镜像(HA 队列)。据我所知,有一个特殊的 class RabbitAdmin 可以解决此类配置问题,但无法确切地找到如何使用它设置队列镜像。是否可以通过某种方式在 Java Spring 中配置 HA 队列?
提前致谢
从 RabbitMQ 3.0 开始,您不能再使用队列参数设置镜像:
您现在必须在代理上使用策略。
镜像队列策略
有什么变化? 在 RabbitMQ 3.0 中,队列镜像在声明队列时不再由 x-ha-policy
参数控制。您的应用程序可以继续声明此参数,但不会导致队列被镜像。相反,您可以声明一个或多个策略来控制镜像哪些队列以及如何镜像。
为什么改变了?任何使用过镜像队列的人都会告诉您,要求应用程序知道哪些队列是镜像的是一件很痛苦的事情。新方式将配置放在broker中,属于哪里,还支持随时更改镜像策略。
我应该怎么办?您需要确保您的队列仍然是镜像的。有关完整文档,请参见此处,但如果您只是想确保所有队列(具有自动生成名称的队列除外)都在所有节点上进行镜像,运行:
rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'
在早期版本中,您可以使用 RabbitAdmin
.
配置它
我想知道:是否有任何方法可以仅使用 Java Spring 代码来设置 RabbitMQ 镜像(HA 队列)。据我所知,有一个特殊的 class RabbitAdmin 可以解决此类配置问题,但无法确切地找到如何使用它设置队列镜像。是否可以通过某种方式在 Java Spring 中配置 HA 队列?
提前致谢
从 RabbitMQ 3.0 开始,您不能再使用队列参数设置镜像:
您现在必须在代理上使用策略。
镜像队列策略
有什么变化? 在 RabbitMQ 3.0 中,队列镜像在声明队列时不再由 x-ha-policy
参数控制。您的应用程序可以继续声明此参数,但不会导致队列被镜像。相反,您可以声明一个或多个策略来控制镜像哪些队列以及如何镜像。
为什么改变了?任何使用过镜像队列的人都会告诉您,要求应用程序知道哪些队列是镜像的是一件很痛苦的事情。新方式将配置放在broker中,属于哪里,还支持随时更改镜像策略。
我应该怎么办?您需要确保您的队列仍然是镜像的。有关完整文档,请参见此处,但如果您只是想确保所有队列(具有自动生成名称的队列除外)都在所有节点上进行镜像,运行:
rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'
在早期版本中,您可以使用 RabbitAdmin
.