![](/img/trans.png)
[英]How to configure weblogic reconnect policy in Spring JMS connection factory
[英]how to configure (spring) JMS connection Pool for WMQ
我正在嘗試在spring / camel中為Websphere MQ配置JMS連接池。 當嘗試從Spring使用CachingConnectionFactory時,我看到類強制轉換異常。 無法從WMQ中找到一個池,是否有人與WMQ完成了連接池,我沒有找到任何示例。 ActiveMQ有很多示例。
這是到目前為止,我正在產生類強制轉換異常。
<bean id="inCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="inboundMqConnectionFactory1" />
<property name="sessionCacheSize" value="5" />
</bean>
<bean id="inboundWebsphereMq1" class="org.apache.camel.component.jms.JmsComponent">
<property name="connectionFactory" ref="inCachingConnectionFactory" />
<property name="destinationResolver" ref="jmsDestinationResolver" />
<property name="transacted" value="true" />
<property name="transactionManager" ref="txManager1" />
</bean>
<bean id="inboundMqConnectionFactory1" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="hostName" value="${isi.inbound.queue.host2}" />
<property name="port" value="${isi.inbound.queue.port}" />
<property name="queueManager" value="${isi.inbound.queue.queuemanager2}" />
<property name="channel" value="${isi.inbound.queue.channel2}" />
<property name="transportType" value="${isi.queue.transportType}" />
</bean>
我看到的異常在這里
試圖恢復。 原因:com.sun.proxy。$ Proxy37無法轉換為com.ibm.mq.jms.MQQueueSession
一般來說:
現在以這種方式嘗試:
<bean id="mqConnectionFactory" class="com.ibm.mq.jms.MQConnectionFactory"
p:queueManager="${QM_NAME}"
p:hostName="${QM_HOST_NAME}"
p:port="${QM_HOST_PORT}"
p:channel="${QM_CHANNEL}"
p:clientID="${QM_CLIENT_ID}">
<property name="transportType">
<util:constant static-field="com.ibm.msg.client.wmq.WMQConstants.WMQ_CM_CLIENT" />
</property>
</bean>
<bean id="userConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter"
p:targetConnectionFactory-ref="mqConnectionFactory"
p:username="${QM_USERNAME}"
p:password="${QM_PASSWORD}" />
<!-- this will work -->
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"
p:targetConnectionFactory-ref="userConnectionFactory"
p:cacheConsumers="true"
p:reconnectOnException="true" />
當然,如果您願意的話,可以緩存會話而不是使用方。 以我的經驗,WMQ會話緩存是可衡量的性能改進,但前提是您受到WMQ計算機上的CPU能力或實際消息吞吐量的限制。 兩種情況在世界上大多數應用中都很少見。 緩存使用者避免了過多的MQ OPEN調用,這在WMQ上是昂貴的操作,因此也有幫助。
我的經驗法則是,消費者+會話緩存的性能優勢等於連接緩存的性能優勢的1/2,除非您受硬件限制,否則在日常的JEE堆棧中通常不會浪費時間。
從WMQ v7開始,與彈簧MC相比,異步使用方的速度非常快,幾乎沒有CPU開銷,並且如果您受硬件限制,則是使用消息的首選方式。 大部分時間我仍然使用Spring,因為我更喜歡Spring隨和的性質。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.