我想在负载均衡器后面设置一个rabbitmq集群,并使用spring amqp连接到它。问题:
它只需要负载均衡器;但是,Spring AMQP维护着一个长期存在的共享连接,因此除非您有多个应用程序,否则负载均衡器通常不会带来太多价值。
使用单个应用程序(具有一个连接工厂),您将只连接到一个代理。
澄清
从版本1.3开始,CachingConnectionFactory可以配置为缓存连接以及通道。在这种情况下,每次调用createConnection()都会创建一个新连接(或从缓存中检索一个空闲连接)。关闭连接会将其返回到缓存(如果尚未达到缓存大小)。在此类连接上创建的通道也会被缓存。在某些环境中使用单独的连接可能很有用,例如从HA群集中使用,与负载均衡器一起使用,以连接到不同的群集成员。将cacheMode设置为CacheMode.CONNECTION。
默认情况下,所有组件(侦听器容器,RabbitTemplates)共享与代理的单个连接。
从版本2.0.2开始,RabbitTemplate
有一个属性usePublisherConnection
;如果将此设置为true,则发布者将使用与侦听器容器的单独连接 - 通常建议避免阻止发布者连接阻止使用者接收消息。
如引号所示,单个(或2个)连接的使用由连接工厂的缓存模式控制。
将缓存模式设置为CONNECTION,意味着每个组件(侦听器容器使用者,RabbitTemplate)都获得自己的连接。实际上,只有一个或两个发布者连接,因为发布操作通常是短暂的,并且连接被缓存以便重用。如果执行并发发布操作,您可能会获得一个或两个发布者连接。