我的骡子流有时冻结[大约30分钟],我怀疑db中的池连接是否导致了这个问题。能否帮助我找到并解决这个问题。它间歇性地发生。
附上我的xmls。
<flow name="balanceDueStarterFlow" processingStrategy="synchronous" doc:description="/" >
<http:listener config-ref="HTTP_Listener_Configuration" path="/${http.balDue}" doc:name="triggerListener" doc:description="//"/>
<logger message="Balance Due process started" level="INFO" doc:name="start"/>
<set-variable variableName="category" value="#['B_D']" doc:name="category"/>
<async doc:name="Async" processingStrategy="Queued_Asynchronous_Processing_Strategy">
<dw:transform-message doc:name="log">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
SRCE_SYS_CD: 'B_D',
TGT_SYS_CD: 'I_TM',
MSG_ACTN_TYP_CD: 'ADD',
MSG_LVL_TYP_CD: 'INFO',
MSG_SHORT_TXT: 'B_D started',
SHPMT_ID: 0,
MSG_LONG_TXT: 'Balance Due process started',
LAST_MOD_ID: 'MULE'
}]]></dw:set-payload>
</dw:transform-message>
<flow-ref name="logToDBFlow" doc:name="logToDBFlow" doc:description="Inserts logging data to MSG_LOG table in TMI database"/>
</async>
<db:select config-ref="SCD_DB" doc:name="balDueRecLoader" doc:description=".">
<db:parameterized-query><![CDATA[SELECT distinct CBD.CARR_BAL_DUE_ID ,CBD.FPS_SHPMT_NBR,CBD.BAL_DUE_AMT,CBD.SCAC_CD,CBD.SHPMT_CMDTY_CD,FS.FAP_SHPMT_TYP_CD
FROM CBD]]></db:parameterized-query>
</db:select>
<set-variable variableName="recordsNum" value="#[payload.size()]" doc:name="recordsNum"/>
<logger message="Balance Due query ran successfully, No. of records retrieved: #[flowVars.recordsNum]" level="INFO" doc:name="numRecords"/>
<async processingStrategy="Queued_Asynchronous_Processing_Strategy" doc:name="Async">
<dw:transform-message doc:name="log">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
SRCE_SYS_CD: 'B_D',
TGT_SYS_CD: 'I_TM',
MSG_ACTN_TYP_CD: 'ADD',
MSG_LVL_TYP_CD: 'INFO',
MSG_SHORT_TXT: 'Balance due data retrieval completed',
SHPMT_ID: 0,
MSG_LONG_TXT: 'Retrieved Balance due data successfully, No. of records:' ++ flowVars.recordsNum,
LAST_MOD_ID: 'MULE'
}]]></dw:set-payload>
</dw:transform-message>
<flow-ref name="logToDBFlow" doc:name="logToDBFlow"/>
</async>
<foreach collection="#[payload]" doc:name="For Each Shipment">
<flow-ref name="balanceDueMainFlow" doc:name="balanceDueMainFlow"/>
</foreach>
<set-property propertyName="http.status" value="${http.successStatus}" doc:name="httpSuccessStatus"/>
<set-payload value="${env}: Balance due process completed" doc:name="httpResponse"/>
<logger message="#[payload]" level="INFO" doc:name="end"/>
<smtp:outbound-endpoint host="${email.host}" port="${email.port}" to="${balDue.to}" from="${email.from}" subject="#[payload]" responseTimeout="10000" doc:name="ackMail"/>
<exception-strategy ref="starterExceptionStrategy" doc:name="Reference Exception Strategy"/>
</flow>
<flow name="logToDBFlow" doc:description="Flow which inserts all the logger messages in to MSG_LOG table in TMI db." processingStrategy="asynchronous">
<db:insert config-ref="TMI_DB" doc:name="logDb">
<db:parameterized-query><![CDATA[INSERT INTO MSG_LOG (SRCE_SYS_CD,TGT_SYS_CD,MSG_ACTN_TYP_CD,MSG_LVL_TYP_CD,MSG_TSP,MSG_SHORT_TXT,SHPMT_ID,MSG_LONG_TXT,LAST_MOD_ID,LAST_MOD_TSP)
VALUES (#[payload.SRCE_SYS_CD],
#[payload.TGT_SYS_CD],
#[payload.MSG_ACTN_TYP_CD],
#[payload.MSG_LVL_TYP_CD],
sysdate,
#[payload.MSG_SHORT_TXT],
#[payload.SHPMT_ID],
#[payload.MSG_LONG_TXT],
#[payload.LAST_MOD_ID],
sysdate)]]></db:parameterized-query>
</db:insert>
<exception-strategy ref="exceptionHandler" doc:name="Reference Exception Strategy"/>
</flow>
<db:oracle-config name="SCD_DB" host="${scd.host}" port="${scd.port}" instance="${scd.sid}" user="${scd.user}" password="${scd.pwd}" doc:name="Oracle Configuration">
<db:pooling-profile maxPoolSize="20" minPoolSize="1" preparedStatementCacheSize="0"/>
<reconnect frequency="${dbretry.interval}" count="${dbretry.count}"/>
</db:oracle-config>
<queued-asynchronous-processing-strategy name="Queued_Asynchronous_Processing_Strategy" doc:name="Queued Asynchronous Processing Strategy" maxThreads="100" threadWaitTimeout="200000" poolExhaustedAction="WAIT" minThreads="10">
</queued-asynchronous-processing-strategy>
<db:oracle-config name="TMI_DB" host="${tmi.host}" port="${tmi.port}" instance="${tmi.sid}" user="${tmi.user}" password="${tmi.pwd}" doc:name="Oracle Configuration">
<db:pooling-profile maxPoolSize="100" minPoolSize="1" preparedStatementCacheSize="0"/>
答案 0 :(得分:0)
你能定义一下冻结定义吗?您是否已进行堆转储或线程转储以查看JVM中发生的情况?我想你可能需要看一下系统的配置文件来解决这个问题。