骡子流冻结一段时间

时间:2017-04-21 07:50:07

标签: mule mule-component

我的骡子流有时冻结[大约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"/>

1 个答案:

答案 0 :(得分:0)

你能定义一下冻结定义吗?您是否已进行堆转储或线程转储以查看JVM中发生的情况?我想你可能需要看一下系统的配置文件来解决这个问题。