java - JMS automatically reconnecting to TOPIC -
i have 2 apps 1 app publishing topic , app reading topic. had scenario queuemanager went down , available again. publisher (without restart) carries on working fine after queuemanager restarts, topic consumer not recieve new messages publisher until restarted. there configuration can setup on topic consumer refresh connection somehow? using java / spring / spring integration on ibm mq. following configuration of our consumer.
<bean id="jmsalertsservicemessagelistener" class="org.springframework.jms.listener.defaultmessagelistenercontainer"> <property name="connectionfactory" ref="alertconnectionfactory"/> <property name="destination" ref="alertsservicetopic"/> <property name="autostartup" value="false"/> <property name="clientid" value="${ps.alert.clientid}"/> <property name="taskexecutor" ref="jmstaskexecutor"/> <property name="subscriptiondurable" value="true"/> <property name="pubsubdomain" value="true"/> <property name="messageselector" value="alertstate = 'resolved'"/> <property name="messagelistener" ref="alertsmessagelistener"/> <property name="durablesubscriptionname" value="replay"/> <property name="recoveryinterval" value="30000"/> </bean> <bean id="alertconnectionfactory" class="com.ibm.mq.jms.mqconnectionfactory" > <property name="transporttype" value="1" /> <property name="queuemanager" value="${alert.mq.qm}" /> <property name="hostname" value="${alert.mq.host}" /> <property name="port" value="${alert.mq.port}" /> <property name="channel" value="${alert.mq.channel}" /> <property name="sslciphersuite" value="ssl_rsa_with_rc4_128_sha" /> <property name="brokerpubqueue" value="${alert.mq.topic_connection_factory_broker_pub_queue}"/> <property name="brokerqueuemanager" value="${alert.mq.topic_connection_factory_broker_queue_manager}"/> <property name="providerversion" value="${alert.mq.topic_connection_factory_provider_version}"/> <property name="brokerversion" value="1"/> <property name="messageselection" value="1"/> </bean> <bean id="alertsservicetopic" class="com.ibm.mq.jms.mqtopic"> <constructor-arg value="${alert.mq.topic}" /> <property name="brokerdursubqueue" value="${alert.mq.queue}"/> <property name="brokerversion" value="1"/> </bean> <bean id="alertsmessagelistener" class="org.springframework.integration.jms.channelpublishingjmsmessagelistener"> <property name="requestchannel" ref="alertsjmsinputchannel"/> </bean> <bean id="jmstaskexecutor" class="org.springframework.scheduling.concurrent.threadpooltaskexecutor"> <property name="corepoolsize" value="1"/> <property name="maxpoolsize" value="1"/> <property name="waitfortaskstocompleteonshutdown" value="true"/> <property name="daemon" value="false"/> <property name="threadnameprefix" value="jmsinbound-"/> <property name="queuecapacity" value="3"/> <!-- discard task gets rejected. --> <property name="rejectedexecutionhandler"> <bean class="java.util.concurrent.threadpoolexecutor$discardpolicy"/> </property> </bean>
the defaultmessagelistenercontainer automatically reconnect according recoveryinterval.
turn on debug (or trace) logging figure out what's happening.
Comments
Post a Comment