Mule esb无法反序列化消息
我们有一个Mule项目,其工作原理如下: 我们从数据库中读取一个Id值,我们使用它从数据库中读取多条记录,使用“foreach”逐个处理 一切正常,但有一些记录在到达新流时给出以下错误 INFO 2014-07-11 10:00:45584[[tcol\U act\U es\U insert].adapter\U act\U es\U insert.stage1.45]org.mule.api.processor.LoggerMessageProcessor:--跟踪Id Lote en proceso:44197277 INFO 2014-07-11 10:00:45584[[tcol\U act\U es\U insert].适配器\U act\U es\U insert.stage1.48]org.mule.api.processor.LoggerMessageProcessor:--跟踪Id Lote en proceso:44197278 INFO 2014-07-11 10:00:45584[[tcol\U act\U es\U insert].适配器\U act\U es\U insert.stage1.47]org.mule.api.processor.LoggerMessageProcessor:--跟踪Id Lote en proceso:44197279 WARN 2014-07-11 10:00:45585[[tcol\u act\u es\u insert].adapter\u act\u es\u insert.stage1.01]org.mule.util.queue.TransactionalQueueSession:无法反序列化消息 java.lang.reflect.InvocationTargetException 位于sun.reflect.GeneratedMethodAccessor18.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:616) 位于org.mule.util.store.DeserializationPostInitializable$Implementation$1.run(DeserializationPostInitializable.java:48) 位于java.security.AccessController.doPrivileged(本机方法) 位于org.mule.util.store.DeserializationPostInitializable$Implementation.init(DeserializationPostInitializable.java:40) 位于org.mule.util.queue.TransactionalQueueSession$QueueImpl.PostProcessIfRequired(TransactionalQueueSession.java:242) 位于org.mule.util.queue.TransactionalQueueSession$QueueImpl.poll(TransactionalQueueSession.java:161) 位于org.mule.processor.SedaStageInterceptingMessageProcessor.dequeue(SedaStageInterceptingMessageProcessor.java:130) 位于org.mule.processor.SedaStageInterceptingMessageProcessor.run(SedaStageInterceptingMessageProcessor.java:205) 位于org.mule.work.WorkerContext.run(WorkerContext.java:286) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 运行(Thread.java:679) 原因:java.util.ConcurrentModificationException 位于org.apache.commons.collections.map.AbstractHashedMap$HashIterator.nextry(AbstractHashedMap.java:1113) 位于org.apache.commons.collections.map.AbstractHashedMap$KeySetIterator.next(AbstractHashedMap.java:938) 在org.mule.DefaultMuleEvent.setMessage(DefaultMuleEvent.java:968)上 在org.mule.DefaultMuleEvent.initAfterDeserialization(DefaultMuleEvent.java:732)上 ... 14多 然后我获取导致错误的记录,如果再次处理该记录,将正确处理。 这是我的密码骡Mule esb无法反序列化消息,mule,Mule,我们有一个Mule项目,其工作原理如下: 我们从数据库中读取一个Id值,我们使用它从数据库中读取多条记录,使用“foreach”逐个处理 一切正常,但有一些记录在到达新流时给出以下错误 INFO 2014-07-11 10:00:45584[[tcol\U act\U es\U insert].adapter\U act\U es\U insert.stage1.45]org.mule.api.processor.LoggerMessageProcessor:--跟踪Id Lote en pro
<flow name="tcol_act_es_insert" doc:name="tcol_act_es_insert" initialState="started">
<jdbc-ee:inbound-endpoint queryKey="select_counter_id" queryTimeout="10" pollingFrequency="30000" connector-ref="Dabase_otros_dev_insert" doc:name="InputDatabase_Counter">
<jdbc-ee:query key="select_counter_id" value="select * from todocoleccion.dbo.config where field='act_es_last_id'"></jdbc-ee:query>
</jdbc-ee:inbound-endpoint>
<set-variable variableName="InputRowsetCounter" value="#[payload]" doc:name="InputRowsetCounter"></set-variable>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="ReloadLotes" queryTimeout="-1" connector-ref="Database_dev_insert" doc:name="ReloadLotes">
<jdbc-ee:query key="ReloadLotes" value="select TOP 50 CONVERT(varchar(50), l.Ultima_Modificacion, 127)+'Z' as ultima_modificacion, l.Id_Lote as id_lote,
...
where Id_Lote>#[InputRowsetCounter.value] and l.Id_Seccion=s.Id_Seccion order by id_lote;"></jdbc-ee:query>
</jdbc-ee:outbound-endpoint>
<set-variable variableName="InputRowsetLotes" value="#[payload]" doc:name="InputRowsetLotes"></set-variable>
<expression-filter expression="#[!payload.isEmpty()]" doc:name="sinLotes"></expression-filter>
<logger level="INFO" doc:name="Logger"></logger>
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="update_counter_config" queryTimeout="-1" connector-ref="Database_todocoleccion_dev_insert" doc:name="Update_Counter">
<jdbc-ee:query key="update_counter_config" value="update todocoleccion.dbo.config set value=#[InputRowsetLotes[InputRowsetLotes.size()-1].id_lote] where field='act_es_last_id'"></jdbc-ee:query>
</jdbc-ee:outbound-endpoint>
<foreach collection="InputRowsetLotes" counterVariableName="counterLotes" rootMessageVariableName="rootMessageLotes" doc:name="For Each Lote">
<flow-ref name="adapter_act_es_insert" doc:name="Flow Reference Dispatcher"></flow-ref>
</foreach>
<catch-exception-strategy doc:name="Catch Exception Strategy">
<flow-ref name="error_handler_act_es_insert" doc:name="Ref Error Handler"></flow-ref>
</catch-exception-strategy>
</flow>
<flow name="adapter_act_es_insert" doc:name="adapter_act_es_insert">
<choice doc:name="Choice">
<when expression="!payload.isEmpty()">
<logger message="--TRACE Id Lote en proceso: #[payload.id_lote]" level="INFO" doc:name="Logger"></logger>
我们在Ubuntu服务器64位上使用mule-standalone-3.5.0-M4.tar.gz
提前感谢您。尝试使用3.5.0,M4是一个早期的access版本,不适用于生产部署。完美,Ale!你说得对。我们改为3.5.0,没有错误。谢谢你。