骆驼的WebSphere JMS,春天,了taskExecutor,haninging主题 [英] WebSphere Camel JMS, spring, taskExecutor, haninging Threads

查看:741
本文介绍了骆驼的WebSphere JMS,春天,了taskExecutor,haninging主题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想骆驼与WebSphere集成。它工作正常,为所有,但一件事。

I'm trying to integrate Camel with WebSphere. It is working fine, for all but one thing.

场景是这样的:
  JMS(WMQ) - >路由/转换 - > BEAN(它做了JPA(OpenJPA1.2 / DB2)提交)

The scenario looks like: JMS (WMQ) -> routing/transformation -> BEAN (which does a JPA (OpenJPA1.2/DB2) commit).

要能够插入到WAS事务管理器和mangaed线程,我插入工作管理器作为了taskExecutor骆驼:

To be able to plug into WAS transaction manager and mangaed threads, I'm inserting the work manager as taskExecutor in camel:

<!-- Selected parts of the spring config -->  
<tx:jta-transaction-manager/>

<bean id="wasTaskExecutor"
  class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
  <property name="workManagerName" value="wm/default" />
</bean>

<bean id="camelTransactionRequired" class="org.apache.camel.spring.spi.SpringTransactionPolicy" depends-on="transactionManager">
    <property name="transactionManager" ref="transactionManager"/>
    <property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"/>
</bean>

<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
  <property name="connectionFactory" ref="connectionFactory"/>
  <property name="taskExecutor" ref="wasTaskExecutor"/>
  <property name="transacted" value="true"/>
  <property name="transactionManager" ref="transactionManager"/>
</bean>  

然后路由,是这样的:

Then a route, something like:

from("jms:queue:MY.QUEUE")
   .transacted("camelTransactionRequired")
   .log(..)
   .bean(storeJPA);

这wasTaskExecutor bean是在应用中的一个独立弹簧消息监听器(同样的JMS提供者,WMQ),以及与预期的行为中。

This wasTaskExecutor bean is used in one stand alone spring message listener (same jms provider, WMQ) in the application as well with expected behaviour.

在部署/启动时,一个消息可以被处理这种方式(下文第一个日志行) - 则线程开始挂起

When deployed/started, ONE message can be processed this way (first log line below) - then threads starts to hang.

[12年5月12日22:14:55:890 CEST] 00000055 SystemOutØ信息routeFromBackend - 消息队列从拉来的消息框

[5/12/12 22:14:55:890 CEST] 00000055 SystemOut O INFO routeFromBackend - Message pulled from queue to message box

[12年5月12日22:27:00:638 CEST] 00000031 ThreadMonitorW¯¯WSVR0605W:线程默认:1(0000001E)一直活跃739306毫秒,可能被挂起。有/有1个线程(收费)总的可挂在服务器上。
    在java.lang.Object.wait(本机方法)
    在java.lang.Object.wait(Object.java:196)
    在com.ibm.ws.util.BoundedBuffer.waitPut_(BoundedBuffer.java:214)
    在com.ibm.ws.util.BoundedBuffer.put(BoundedBuffer.java:324)
    在com.ibm.ws.util.ThreadPool.execute(ThreadPool.java:1296)
    在com.ibm.ws.util.ThreadPool.execute(ThreadPool.java:1100)
    在com.ibm.ws.asynchbeans.WorkItemImpl $ PoolExecuteProxy.run(WorkItemImpl.java:198)
    在com.ibm.ws.asynchbeans.WorkItemImpl.executeOnPool(WorkItemImpl.java:219)
    在com.ibm.ws.asynchbeans.WorkManagerImpl.queueWorkItemForDispatch(WorkManagerImpl.java:433)
    在com.ibm.ws.asynchbeans.WorkManagerImpl.schedule(WorkManagerImpl.java:1074)
    在com.ibm.ws.asynchbeans.WorkManagerImpl.schedule(WorkManagerImpl.java:846)
    在org.springframework.scheduling.commonj.WorkManagerTaskExecutor.execute(WorkManagerTaskExecutor.java:154)
    在org.springframework.jms.listener.DefaultMessageListenerContainer.doRescheduleTask(DefaultMessageListenerContainer.java:669)
    在org.springframework.jms.listener.AbstractJmsListeningContainer.resumePausedTasks(AbstractJmsListeningContainer.java:536)
    在org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:285)
    在org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:263)
    在org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:555)
    在org.apache.camel.component.jms.JmsConsumer.startListenerContainer(JmsConsumer.java:84)

[5/12/12 22:27:00:638 CEST] 00000031 ThreadMonitor W WSVR0605W: Thread "Default : 1" (0000001e) has been active for 739306 milliseconds and may be hung. There is/are 1 thread(s) in total in the server that may be hung. at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:196) at com.ibm.ws.util.BoundedBuffer.waitPut_(BoundedBuffer.java:214) at com.ibm.ws.util.BoundedBuffer.put(BoundedBuffer.java:324) at com.ibm.ws.util.ThreadPool.execute(ThreadPool.java:1296) at com.ibm.ws.util.ThreadPool.execute(ThreadPool.java:1100) at com.ibm.ws.asynchbeans.WorkItemImpl$PoolExecuteProxy.run(WorkItemImpl.java:198) at com.ibm.ws.asynchbeans.WorkItemImpl.executeOnPool(WorkItemImpl.java:219) at com.ibm.ws.asynchbeans.WorkManagerImpl.queueWorkItemForDispatch(WorkManagerImpl.java:433) at com.ibm.ws.asynchbeans.WorkManagerImpl.schedule(WorkManagerImpl.java:1074) at com.ibm.ws.asynchbeans.WorkManagerImpl.schedule(WorkManagerImpl.java:846) at org.springframework.scheduling.commonj.WorkManagerTaskExecutor.execute(WorkManagerTaskExecutor.java:154) at org.springframework.jms.listener.DefaultMessageListenerContainer.doRescheduleTask(DefaultMessageListenerContainer.java:669) at org.springframework.jms.listener.AbstractJmsListeningContainer.resumePausedTasks(AbstractJmsListeningContainer.java:536) at org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:285) at org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:263) at org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:555) at org.apache.camel.component.jms.JmsConsumer.startListenerContainer(JmsConsumer.java:84)

有没有人见过这个?

推荐答案

该线程被挂起等待提交工作提高到一个完整的队列和工作管理器配置时,队列已满阻止,而不是抛出一个错误。要解决挂起,要么增加工作管理线程池中的线程数,或改变队列满的行动是错误,而不是等待。另外,调查,如果工作项目提交给工作管理器正在太长出于某种原因。

The thread is "hung" waiting to submit work to a full queue, and the work manager is configured to block rather than throw an error when the queue is full. To resolve the "hang", either increase the number of threads in the work manager thread pool, or change the queue full action to be "error" rather than "wait". Alternatively, investigate if the work items being submitted to the work manager are taking too long for some reason.

这篇关于骆驼的WebSphere JMS,春天,了taskExecutor,haninging主题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆