[英]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_NONE
, CACHE_CONNECTION
, CACHE_SESSION
或CACHE_AUTO
的緩存級別。
我必須將其設置為Spring的CACHE_NONE
才能在連接工廠中創建多個連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.