我正在用Spring编写一个服务,并使用Spring AMQP连接到Rabbitmq。
我有两个rabbitmq集群,一个仅用于发布消息(消息通过联合插件发送到另一个集群),另一个集群用于声明最终用户将从中使用的队列。
节点位于aws lb后面,每个集群有一个lb。
我在代码中使用CachingConnectionFactory和RabbitTemboard、RabbitAdmin,我希望与所有节点都有连接,以便我可以使用它们。对于将包含我添加到配置中的队列的集群,query-master-locator=随机,因此即使我的服务没有与它们的连接,新队列也将在集群中的所有节点中声明。
对于发布消息的集群,我有更多的问题,因为我需要在服务中直接连接到每个节点,以便能够分离节点之间的负载。
所以我的问题是,如何在我的服务中创建与集群中所有节点的连接,以便它们都用于声明队列和发送消息?
现在,在我对这个问题有了某种解决方案之后,下一个问题是在集群中添加新节点时会发生什么?如何创建到它的连接并开始使用它?
我使用的是Rabbitmq-3.7.9、Spring-2.0.5、Spring AMQP-2.0.5
非常感谢!
目前还没有这样做的机制。
默认情况下,Spring AMQP只打开一个连接(可选两个,一个用于发布,一个用于消费)。
即使使用CacheMode。连接,您将为每个消费者获得一个新连接(并且将根据生产者的需要创建和缓存连接),您将无法控制连接到哪个节点;这是LB的函数。
该框架确实提供了LocalizedQueueConnectionFactory
,它将尝试从托管队列的节点消耗,但它无法与就位的负载均衡器一起工作。
然而,通常很少需要这样的优化。
您是否正在尝试解决您现在遇到的实际问题,或者您认为可能存在问题的事情?
通常,最好不要执行过早的优化。
问题内容: 我有一个使用Java Servlet / JSP的应用程序。我的应用有多个客户端,但是每个客户端都有一个单独的数据库。所有数据库都具有相同的架构。我想确定用户登录系统时要使用哪个数据库连接。 例如,客户端A登录后,我确定客户端A属于数据库C,抓住了数据库C的连接,然后继续愉快地进行操作。 我正在将JPA与Hibernate一起用作我的JPA提供程序。是否可以使用多个持久性单元并在登录时
下面的代码片段是从JoinedStreams的javadoc复制的 这两个流仅基于一个键(通过< code>t =计算)进行连接 我会问我如何基于多个键进行连接,例如,one.a = two.a和
我想在一个容器中运行 RabbitMQ,在另一个容器中运行工作进程。工作进程需要访问 RabbitMQ。 我希望这些通过进行管理。 这是我的<代码>docker compose。迄今为止,yml文件: 所以我暴露了RabbitMQ端口。工作进程使用以下URL访问RabbitMQ: 这是他们在官方教程中使用的,但是已被替换为,因为容器应该可以使用与容器名称相同的主机名来发现: 默认情况下,“合成”会
我的第二个问题是:是否需要?我将来可能会添加更多的节点。
我有一个通用的独立JMS应用程序,它与以下JMS提供程序一起工作WebSphere、HornetQ和ActiveMq。我传递上下文。INITIAL_CONTEXT_FACTORY和上下文。PROVIDER_URL作为我的应用程序的参数,并通过这样做来创建一个命名上下文 并使用此上下文进行对象查找。 我知道RabbitMQ不是JMS提供程序,所以它没有初始上下文类或提供程序网址,但它提供了一个JMS
我将RabbitMQ包用于Symfony2 web框架。我的问题是,在TERMINAL中运行多个workers后,如何避免创建多个连接(以防止使代理过载)?在下面的示例中,我运行了两个workers,结果有两个connections/channel。 config.yml services.yml