簡體   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