【发布时间】:2014-10-05 03:46:34
【问题描述】:
我有一个用例,我想在应用程序中创建多个侦听器 (6)。我想订阅多个目的地(6 个主题)。 所有订阅都是持久的。我为每个侦听器使用单独的默认消息侦听器容器(DMLC)并使用不同的客户端 ID,但我对如何使用连接工厂感到困惑。
我应该使用单个 ActiveMQ 池连接工厂并将 maxConnection 指定为 6。还是应该为每个侦听器使用不同的池连接工厂?
将 pooledConnectionFactory 和 maxConnection 用于持久订阅者有什么危害吗?
源代码:
连接工厂:
<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>${jms.broker.url}</value>
</property>
</bean>
</property>
<property name="maxConnections" value="6" />
我的听众将其用作:(我有 6 个类似的听众,使用不同的目的地和客户端 ID)
<bean id="listenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer"
<property name="connectionFactory" ref="jmsFactory" />
<property name="destination" ref="topic_pnlCompleteTopic" />
<property name="durableSubscriptionName" value="FAGCompletion" />
<property name="pubSubDomain" value="true" />
<property name="subscriptionDurable" value="${jms.fagsListener.durable}" />
<property name="clientId" value="${jms.fagsListener.clientId}" />
<property name="messageListener" ref="pnlMessageListener" />
<property name="messageSelector" value="JMSType = 'FAG Completion'" />
</bean>
【问题讨论】:
标签: spring activemq spring-integration spring-jms