spring云环境中的分布式Rabbitmq

spring云环境中的分布式Rabbitmq,rabbitmq,spring-cloud,spring-amqp,netflix-eureka,Rabbitmq,Spring Cloud,Spring Amqp,Netflix Eureka,我正在尝试使用以下组件基于当前的spring云版本(主要是Netflix OSS)建立一个分布式系统 1个或多个云配置服务器 1台或多台Eureka服务器 使用Eureka和配置服务器客户端的1个或多个服务 上面的设置非常简单,但是一旦您开始考虑设置,以便云配置服务器中的配置更改自动触发实际客户端值的更改,事情就会变得更加复杂 我的理解是,为了让这种功能发挥作用,应该将spring cloud bus客户端引入到服务中,这些服务将依次使用当前唯一受支持的实现rabbitmq服务器(实际的ra

我正在尝试使用以下组件基于当前的spring云版本(主要是Netflix OSS)建立一个分布式系统

  • 1个或多个云配置服务器
  • 1台或多台Eureka服务器
  • 使用Eureka和配置服务器客户端的1个或多个服务
上面的设置非常简单,但是一旦您开始考虑设置,以便云配置服务器中的配置更改自动触发实际客户端值的更改,事情就会变得更加复杂

我的理解是,为了让这种功能发挥作用,应该将spring cloud bus客户端引入到服务中,这些服务将依次使用当前唯一受支持的实现rabbitmq服务器(实际的rabbitmq二进制文件,而不是像eureka或Config Server这样的spring引导应用程序)允许配置服务器中的更改事件自动传播到客户端

设置这样一个系统听起来有悖常理,必须将地址硬编码到客户机中的rabbitmq服务器(即使将rabbitmq服务器的数量或多或少保持为静态)

如何在Eureka服务发现服务器中注册rabbitmq服务器实例,以便客户端在启动之前不必知道其位置就可以找到它们


鉴于rabbitmq不是spring云组件,我似乎找不到任何关于如何实现这一点的文档。事实上,关于rabbitmq+eureka+spring云总线应该如何一起设置的文档似乎很少

我知道我在回答一个非常古老的问题,尽管我认为这对以后阅读本文的人来说是值得一提的

以AWS为例,大多数云服务都有一个解决方案,因此您可以为RabbitMQ服务器配置IP,无论实例是否更改,IP始终属于RabbitMQ。您可以将弹性IP重新连接到不同的实例


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

您可以将RabbitMQ信息放在Config Server中。Brixton中的总线也支持redis和kafka。您的意思是将rabbitmq服务器的地址硬编码为配置服务器中的属性?我不认为这与应用程序中的硬编码有多大不同,而且这是如何工作的呢?配置服务器本身需要这些信息来推送造成鸡/蛋问题的事件。是的,Brixton支持其他产品,但是它正在进行里程碑式的发布,目前在技术上还没有准备好生产。它与应用程序中的硬编码rabbit非常不同。没有鸡和蛋的问题。在第一次连接到rabbitmq之前,从配置服务器检索配置。该项目使用总线。配置是通过boot Yes完成的,但是如果在配置服务器中配置的rabbitmq实例停止运行,并且是全新的实例,而不是在任何地方进行配置,那么会出现什么情况呢。由于rabbitmq实例没有服务发现,配置服务器和服务将不再能够通过总线进行通信,因为它们不知道新后端实例的地址,我认为在分布式系统中应该解决这个问题。这正是我所困惑的。因为我们正在讨论一个分布式系统,在这个系统中,实例可以随意上下更改ip,总线后端是否也应该在Eureka上注册,而不是在配置服务器上硬编码地址,这在一定时间后可能不再有效?