gpt4 book ai didi

java - 有没有办法在 RabbitMQ 队列、交换、绑定(bind)等上执行 "migration"操作?

转载 作者:行者123 更新时间:2023-11-30 06:10:22 26 4
gpt4 key购买 nike

我想知道是否有任何替代方法可以创建/更改/删除交换队列绑定(bind)而不依赖于框架(在我的例子中,Spring)因为这一点和他的局限性。

问题

我经常需要更改路由键、队列交换器的名称,而这些框架不允许进行这种“精致”的更改。因此,趋势是继续使用队列/键的原始名称,甚至原始设置(durable、DLQ 等)。将来,这最终会导致队列的组织困惑,因为您无法轻松地对其名称、配置进行适当的维护,最终在不同的交换机上重新组织它们等。

实际上,实现这一目标的唯一方法是手动从每个环境中删除它们并让框架重新创建它们。或者移动临时队列的消息来执行相同的操作。

我想知道是否有任何替代方案来控制这个问题,例如数据库迁移工具,如 Liquibase、Flyway 等。

与数据库问题进行并行处理,目前让 Spring 在 RabbitMQ 中创建所有内容,在我看来类似于在生产数据库上的 update 上保留 hbm2ddl Hibernate 选项。

最佳答案

您可以更改某些内容,但不能更改其他内容 - 但您必须以编程方式而不是声明方式进行操作。

您可以使用 RabbitAdmin.declareBinding() 将队列与不同的路由键(和/或交换器)绑定(bind),然后使用 removeBinding() 删除旧的。

您无法更改队列参数(DLQ 设置等)或持久性。

您可以使用 shovel 插件将消息从旧队列移动到新队列。

关于java - 有没有办法在 RabbitMQ 队列、交换、绑定(bind)等上执行 "migration"操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50390673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com