我有一个使用 Spring Integration + RabbitMQ 的项目。我们仍处于早期开发阶段,因此我们正在快速更改集成架构的拓扑结构,包括 RabbitMQ 配置。
我们还尝试通过免提部署来遵循持续部署。
我<rabbit:admin />
在我的 spring 配置中声明了一个元素,它很好地处理了添加新的交换或队列。
但是,当我部署更改现有交换/队列配置的更新时,我发现它失败了。
最近,一些部署失败了,因为:
- 我们将 Direct Queue 切换为 FanOut 交换
- 我们更改了直接队列上消息的声明 TTL。
在这两种情况下,都需要对现有配置进行更改,而不仅仅是创建一个新实例。未应用这些更新,导致启动失败。
对于这两者,修复很简单——删除有问题的资源,重新启动应用程序,然后<rabbit:admin />
用正确的定义替换它们。
但是,在生产系统中,我们不能这样做。此外,这目前还没有作为我们部署的一部分编写脚本,这使得持续部署更加麻烦。
哪些工具或策略可用于处理 RabbitMQ 拓扑更新的持续部署策略?