带有rabbitmq集群和spring amqp的负载均衡器

问题描述 投票:0回答:1

我想在负载均衡器后面设置一个rabbitmq集群,并使用spring amqp连接到它。问题:

  1. Spring客户端是否需要知道RMQ集群中每个节点的地址,或者只知道负载均衡器的地址就足够了。
  2. 如果Spring客户端只知道负载均衡器,它将如何维护集群中每个节点的连接/连接工厂。
  3. 是否有任何代码示例,它显示了如何使spring客户端与负载均衡器一起工作。
rabbitmq spring-amqp spring-rabbitmq
1个回答
0
投票

它只需要负载均衡器;但是,Spring AMQP维护着一个长期存在的共享连接,因此除非您有多个应用程序,否则负载均衡器通常不会带来太多价值。

使用单个应用程序(具有一个连接工厂),您将只连接到一个代理。

澄清

the documentation

从版本1.3开始,CachingConnectionFactory可以配置为缓存连接以及通道。在这种情况下,每次调用createConnection()都会创建一个新连接(或从缓存中检索一个空闲连接)。关闭连接会将其返回到缓存(如果尚未达到缓存大小)。在此类连接上创建的通道也会被缓存。在某些环境中使用单独的连接可能很有用,例如从HA群集中使用,与负载均衡器一起使用,以连接到不同的群集成员。将cacheMode设置为CacheMode.CONNECTION。

默认情况下,所有组件(侦听器容器,RabbitTemplates)共享与代理的单个连接。

从版本2.0.2开始,RabbitTemplate有一个属性usePublisherConnection;如果将此设置为true,则发布者将使用与侦听器容器的单独连接 - 通常建议避免阻止发布者连接阻止使用者接收消息。

如引号所示,单个(或2个)连接的使用由连接工厂的缓存模式控制。

将缓存模式设置为CONNECTION,意味着每个组件(侦听器容器使用者,RabbitTemplate)都获得自己的连接。实际上,只有一个或两个发布者连接,因为发布操作通常是短暂的,并且连接被缓存以便重用。如果执行并发发布操作,您可能会获得一个或两个发布者连接。

© www.soinside.com 2019 - 2024. All rights reserved.