Mule:DB插入失败,超时
我正在尝试将数据插入数据库表中&出现以下错误: 异常堆栈是: 1.超过超时(java.util.concurrent.TimeoutException) com.ning.http.client.providers.grizzly.grizzlysynchttpprovider:426(空) 2.发送HTTP请求时出错。消息负载的类型为:String(org.mule.api.MessaginException) org.mule.module.http.internal.request.DefaultHttpRequester:287()Mule:DB插入失败,超时,mule,Mule,我正在尝试将数据插入数据库表中&出现以下错误: 异常堆栈是: 1.超过超时(java.util.concurrent.TimeoutException) com.ning.http.client.providers.grizzly.grizzlysynchttpprovider:426(空) 2.发送HTTP请求时出错。消息负载的类型为:String(org.mule.api.MessaginException) org.mule.module.http.internal.request.Def
根异常堆栈跟踪: java.util.concurrent.TimeoutException:超出超时 位于com.ning.http.client.providers.grizzly.grizzlysynchnttprovider.timeout(grizzlysynchnttprovider.java:426) 位于com.ning.http.client.providers.grizzly.grizzlysynchnttprovider$3.onTimeout(grizzlysynchnttprovider.java:274) 在org.glassfish.grizzly.utils.IdleTimeoutFilter$DefaultWorker.doWork(IdleTimeoutFilter.java:398) 在org.glassfish.grizzly.utils.IdleTimeoutFilter$DefaultWorker.doWork(IdleTimeoutFilter.java:377) 位于org.glassfish.grizzly.utils.DelayedExecutor$DelayedRunnable.run(DelayedExecutor.java:158) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 运行(Thread.java:745)
我的插入代码如下:
<flow name="api-main">
<http:listener config-ref="db-system-api-httpListenerConfig" path="/api/*" doc:name="HTTP"/>
<apikit:router config-ref="db-system-api-config" doc:name="APIkit Router"/>
<exception-strategy ref="db-system-api-apiKitGlobalExceptionMapping" doc:name="Reference Exception Strategy"/>
</flow>
<flow name="put:/contract/{id}:db-system-api-config" processingStrategy="synchronous" >
<set-property propertyName="Content-Type" value="application/json" doc:name="Set Content Type"/>
<logger message="#[payload]" level="INFO" doc:name="Initial Payload"/>
<json:json-to-object-transformer returnClass="java.util.HashMap" mimeType="text/plain" doc:name="JSON to Object"/>
<foreach collection="#[payload.entrySet()]" doc:name="For Each">
<db:insert config-ref="Oracle_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[INSERT INTO XX.XX_OE_HDR (ID,
NUMBER,
EFF_START_DATE,
EFF_END_DATE,
CUST_NUMBER)
VALUES (xx.XX_HDR_SEQ.NEXTVAL,
xx.XX_HDR_NUM_SEQ.NEXTVAL,
TO_DATE('2017-05-23','YYYY-MM-DD HH24:MI:SS'),
TO_DATE('2017-06-23','YYYY-MM-DD HH24:MI:SS'),
#[payload.myField])]]></db:parameterized-query>
</db:insert>
</foreach>
<logger message="Record successful" level="INFO" doc:name="Log Success"/>
根据com.ning.http.client上超过的
超时
您的问题位于http请求中。据我所知,Oracle数据库(与大多数常见数据库一样)使用TCP协议进行传输,而您的问题位于http超时
您能否提供完整的流程,以及如何触发流程
另一方面,您是否可以尝试隔离问题并替换记录器的数据库,并检查对流的http请求是否没有问题?(假设您通过http请求触发此流)有任何输入吗?感谢您回复Mario,请签出更新的代码。我将尝试用记录器替换DB