Я использую jms: исходящий канал-адаптер. Мы заметили, что сервер приложений запускает слишком много MQ-соединений. Приложение в конечном счете исчерпывает ограничение maxChannel сервера MQ и начинает получать:
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2537' ('MQRC_CHANNEL_NOT_AVAILABLE')
Я использую MQTopicConnectionFactory, CachingConnectionFactory, адаптер исходящего канала .
Текущая конфигурация:
<bean id="mqQueueConnectionFactory" class="com.ibm.mq.jms.MQTopicConnectionFactory">
<property name="SSLCipherSuite" value="${mq.sslCipherSuite}"/>
<property name="hostName" value="${mq.hostName}"/>
<property name="port" value="${mq.port}"/>
<property name="channel" value="${mq.channel}"/>
<property name="transportType" value="1"/>
</bean>
<bean id="cachedConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory"
p:targetConnectionFactory-ref="jmsTConnectionFactory"
p:reconnectOnException="true" p:sessionCacheSize="10"
p:cacheProducers="true" />
<bean id="senderTopic" class="com.ibm.mq.jms.MQTopic" >
<constructor-arg value="${mq.topicName}"/>
</bean>
<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref bean="cachedConnectionFactory" />
</property>
<property name="defaultDestination">
<ref bean="senderTopic" />
</property>
</bean>
Адаптер исходящего канала:
<int-jms:outbound-channel-adapter
id="jmsOutToNE" channel="umpAlertNotificationJMSChannel"
destination="senderTopic" jms-template="jmsQueueTemplate">
<!-- <int:retry-advice/> -->
</int-jms:outbound-channel-adapter>
Поток интеграции пружины, имеющий 250 одновременных потоков, однако при пиковой нагрузке существует более 2000 соединений MQ, запускающихся при максимальной нагрузке.
Какое значение sessionCacheSize = "10" в CachingConnectionFactory, если количество соединений превышает 500?
Как я могу ограничить количество соединений MQ?
Не может ли JMS повторно использовать соединение MQ из пула, как работают соединения с БД?