在spring-cloud环境中分布式Rabbitmq

Ale*_*rio 6 rabbitmq spring-amqp spring-cloud netflix-eureka

我正在尝试使用以下组件基于当前的spring-cloud发布(主要是Netflix OSS)来设置分布式系统

  • 1个或多个云配置服务器
  • 1个或更多Eureka服务器
  • 使用Eureka和Config Server客户端的一项或多项服务

上面的设置很容易开始,但是一旦你开始研究设置,以便云配置服务器中的配置更改自动触发实际客户端的值的变化,事情开始变得更加复杂.

我的理解是,要使这样的功能工作,应该将spring-cloud-bus客户端引入服务,这些服务反过来将使用,目前唯一支持的实现,rabbitmq服务器(实际的rabbitmq二进制文件,而不是一些spring-boot应用程序,如eureka或Config服务器)允许Config服务器中的更改事件自动传播到客户端.

设置这样的系统听起来违反直觉,并且必须将地址硬编码到客户端中的rabbitmq服务器(即使一个人将保持Rabbitmq服务器的数量或多或少是静态的).

如何在Eureka服务发现服务器中注册rabbitmq服务器实例,以允许客户端在启动之前无需了解其位置即可找到它们?

鉴于rabbitmq不是spring-cloud组件,我似乎无法找到有关如何完成此操作的任何文档.实际上,关于如何将rabbitmq + eureka + spring-cloud-bus设置在一起的文档似乎很少.

Mat*_*n D 1

我知道我正在回答一个非常古老的问题,尽管我认为对于将来阅读此内容的人来说值得发表评论。

大多数云服务,以 AWS 为例,都有弹性 IP解决方案 - 因此您可以为 RabbitMQ 服务器配置 IP,并且无论实例是否发生变化,IP 始终属于 RabbitMQ。您可以将弹性IP重新附加到不同的实例。

它的工作原理与Elastic Load Balancer几乎相同,后者保留其 IP,因此您可以使用 Spring Cloud Config Server 将微服务配置到特定 IP - 并扩展 RabbitMQ 实例,而无需担心配置更改。