创建和清理实例特定的 rabbitMQ 实例

Create and cleanup instance specific rabbitMQ instances

我有一套使用springboot rest的微服务。这些微服务将部署在自动缩放和负载平衡的环境中。其中一项服务负责管理系统的配置。当其他微服务启动时,他们从这个服务中获取配置。如果配置更新,我需要通知所有当前 运行 微服务实例更新它们的缓存配置。

我正在考虑将 RabbitMQ 与扇出交换一起使用。在此解决方案中,每个实例在启动时都会创建其队列并将该队列绑定到交换器。当有配置更改时,配置服务将向当前绑定到该交换器的所有队列发布更新。

但是,随着服务实例被删除,我不知道如何删除特定于该实例的队列。我用谷歌搜索但找不到解决方案的完整工作示例。

有什么帮助或建议吗?

思路和方案是正确的。您只是想念那些由您的消费者服务创建的队列可以声明为 auto-delete=true: https://www.rabbitmq.com/queues.html。只要您的服务是 UP,队列也在那里。你停止你的服务,它的消费者被停止并取消订阅。在最后一个消费者取消订阅的那一刻,队列从代理中删除。

另一方面,我建议查看 Spring Cloud Bus 项目,它真正针对这样的任务:https://spring.io/projects/spring-cloud-bus