繁体   English   中英

负载平衡客户端会话

[英]Load Balancing Client Sessions

我有2个服务器ActiveMQ Artemis群集设置,使用JGroups可以正常工作地进行发现。 然后在我的应用程序中,通过ActiveMQJMSClient创建ConnectionFactory:

final ActiveMQConnectionFactory cf = ActiveMQJMSClient.createConnectionFactory(
    "jgroups://test-cluster?file=jgroups-file-ping.xml&connectionLoadBalancingPolicyClassName=org.apache.activemq.artemis.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy", "test-cluster");

然后使用Spring处理生产者和消费者。 但是,当Spring在启动时创建10个使用者时,我看到所有10个使用者都使用同一台Artemis服务器。

这是Spring JMS配置:

@Bean 
public DefaultJmsListenerContainerFactory jmsListenerContainerFactory() throws Exception {
    final ConnectionFactory cf = getActiveMQConnectionFactory();
    final DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    factory.setConnectionFactory(cf);
    factory.setConcurrency("10-20");
    factory.setSessionTransacted(true);
    factory.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE);

    return factory;
}

然后在应用程序启动时,我在JmsListenerConfigurer中调用它:

public static void registerEndPoint(final JmsListenerEndpointRegistrar registrar,
    String endPointName, String dest, MessageListener listener) {
    final SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint();

    endpoint.setId(endPointName);
    endpoint.setDestination(dest);
    endpoint.setMessageListener(listener);
    registrar.registerEndpoint(endpoint);
}

是否可以进行设置,以便每个Artemis服务器上有5个使用者?

Spring的DefaultJmsListenerContainerFactory具有可以更改为CACHE_NONECACHE_CONNECTIONCACHE_SESSIONCACHE_AUTO的缓存级别。

我必须将其设置为Spring的CACHE_NONE才能在连接工厂中创建多个连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM