Serialization 无法在批处理步骤Mule ESB中捕获失败记录
我已对批处理流程进行了以下配置。 对于批处理作业-->max failed records=“-1”-这表示实例将处理所有记录,而不管失败记录的数量如何Serialization 无法在批处理步骤Mule ESB中捕获失败记录,serialization,batch-processing,kryo,dataweave,Serialization,Batch Processing,Kryo,Dataweave,我已对批处理流程进行了以下配置。 对于批处理作业-->max failed records=“-1”-这表示实例将处理所有记录,而不管失败记录的数量如何 1. Batch_Step: AcceptPolicy= “All” So this being first batch step will accept all the records and process them. 2. Batch_Step1: AcceptPolicy= “ONLY_
1. Batch_Step: AcceptPolicy= “All”
So this being first batch step will accept all the records and process them.
2. Batch_Step1: AcceptPolicy= “ONLY_FAILURES”
So this must accept only the records that got failed in the first batch Step.
**The first batchstep has some dataweave transformation.
The second batchstep as of know i am just logging and no transformation is present.**
在Dataweave中,当出现一些不正确的记录(错误的数据)时,会发生异常,因此必须在第二步中捕获该不正确的记录
但我面临的问题是,第一批执行良好,并显示失败记录的计数
但控件根本不进入第二批处理步骤,控制台中存在PFB异常。(只有当某些记录在第一个批处理步骤中失败时,才会发生这种情况)。对于积极的场景,批处理步骤可以正常工作。根据我的观察,以下内容可能对日志控制台有用:无法对缓冲区“批处理队列缓冲区”上的作业“failedrecordspocBatch”的4条记录进行排队,例如“3b742880-98e1-11e5-9927-f0ea20524153”。记录将被标记为失败。处理块id为“3d066141-98e1-11e5-9927-f0ea20524153”
The exception stack trace is
Cannot coerce a :null to a :string (com.mulesoft.weave.mule.exception.WeaveExecutionException)
com.mulesoft.weave.mule.WeaveMessageProcessor$WeaveOutputHandler:201 (null)
--------------------------------------------------------------------------------
Root Exception stack trace:
com.mulesoft.weave.model.values.coercion.UnsupportedTypeCoercionException: Cannot coerce a :null to a :string
at com.mulesoft.weave.model.values.formatting.StringFormatTypeCoercionValue.evaluate(StringFormatTypeCoercionValue.scala:58)
at com.mulesoft.weave.model.values.formatting.StringFormatTypeCoercionValue.evaluate(StringFormatTypeCoercionValue.scala:14)
at com.mulesoft.weave.engine.ast.stringops.JoinOpNode$$anonfun$evaluate$1.apply(JoinOpNode.scala:14)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
ERROR 2015-12-02 16:11:27,635 [batch-job-failedrecordspocBatch-work-manager.02] com.mulesoft.module.batch.engine.buffer.TransactionalQueueBuffer: Could not queue 4 records for instance '3b742880-98e1-11e5-9927-f0ea20524153' of job 'failedrecordspocBatch' on buffer 'batch-stepping-queue-buffer'. Records will be marked as failed. Processing block id is '3d066141-98e1-11e5-9927-f0ea20524153'
org.mule.api.serialization.SerializationException: Could not serialize object
at org.mule.serialization.internal.AbstractObjectSerializer.serialize(AbstractObjectSerializer.java:68) ~[?:?]
at com.mulesoft.module.batch.engine.queue.AbstractBatchQueueDelegate.dispatch(AbstractBatchQueueDelegate.java:103) ~[?:?]
at com.mulesoft.module.batch.engine.queue.SteppingQueueDelegate.dispatch(SteppingQueueDelegate.java:52) ~[?:?]
at com.mulesoft.module.batch.engine.buffer.TransactionalQueueBuffer.writeToQueue(TransactionalQueueBuffer.java:142) ~[?:?]
at com.mulesoft.module.batch.engine.buffer.TransactionalQueueBuffer.doFlush(TransactionalQueueBuffer.java:127) ~[?:?]
at com.mulesoft.module.batch.engine.buffer.TransactionalQueueBuffer.add(TransactionalQueueBuffer.java:87) ~[?:?]
at com.mulesoft.module.batch.engine.DefaultBatchEngine.routeNext(DefaultBatchEngine.java:736) ~[?:?]
at com.mulesoft.module.batch.engine.DefaultBatchEngine.routeError(DefaultBatchEngine.java:593) ~[?:?]
at com.mulesoft.module.batch.engine.DefaultBatchEngine.updateStatisticsAndRoute(DefaultBatchEngine.java:817) ~[?:?]
at com.mulesoft.module.batch.engine.threading.BatchRecordWork.run(BatchRecordWork.java:92) ~[?:?]
at org.mule.work.WorkerContext.run(WorkerContext.java:286) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.7.0_72]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.7.0_72]
at java.lang.Thread.run(Unknown Source) [?:1.7.0_72]
Caused by: com.esotericsoftware.kryo.KryoException: java.util.ConcurrentModificationException
Serialization trace:
classes (sun.misc.Launcher$AppClassLoader)
classloader (java.security.ProtectionDomain)
context (java.security.AccessControlContext)
acc (org.mule.module.launcher.MuleApplicationClassLoader)
classLoaders (org.mule.module.launcher.application.CompositeApplicationClassLoader)
executionClassLoader (org.mule.DefaultMuleContext)
context (com.mulesoft.weave.mule.function.FlowRefLookupFunctionValue)
_2 (scala.Tuple2)
kv (scala.collection.immutable.HashMap$HashMap1)
elems (scala.collection.immutable.HashMap$HashTrieMap)
variableContext (com.mulesoft.weave.mule.WeaveMessageProcessor$WeaveOutputHandler)
payload (com.mulesoft.module.batch.record.Record)
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:101) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:366) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:307) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:603) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:87) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:100) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:40) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:366) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:307) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:100) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:40) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.mulesoft.module.serialization.kryo.internal.KryoObjectSerializer.doSerialize(KryoObjectSerializer.java:105) ~[?:?]
at com.mulesoft.module.serialization.kryo.internal.KryoObjectSerializer.doSerialize(KryoObjectSerializer.java:97) ~[?:?]
at org.mule.serialization.internal.AbstractObjectSerializer.serialize(AbstractObjectSerializer.java:64) ~[?:?]
... 13 more
Caused by: java.util.ConcurrentModificationException
at java.util.Vector$Itr.checkForComodification(Unknown Source) ~[?:1.7.0_72]
at java.util.Vector$Itr.next(Unknown Source) ~[?:1.7.0_72]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:92) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:40) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:366) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:307) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObjectOrNull(Kryo.java:603) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:87) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:100) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:40) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:366) ~[?:?]
at com.esotericsoftware.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.write(DefaultArraySerializers.java:307) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:549) ~[?:?]
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:80) ~[?:?]
at com.esotericsoftware.kryo.serializers.FieldSerializer.write(FieldSerializer.java:524) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:100) ~[?:?]
at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:40) ~[?:?]
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:625) ~[?:?]
at com.mulesoft.module.serialization.kryo.internal.KryoObjectSerializer.doSerialize(KryoObjectSerializer.java:105) ~[?:?]
at com.mulesoft.module.serialization.kryo.internal.KryoObjectSerializer.doSerialize(KryoObjectSerializer.java:97) ~[?:?]
at org.mule.serialization.internal.AbstractObjectSerializer.serialize(AbstractObjectSerializer.java:64) ~[?:?]
... 13 more
INFO 2015-12-02 16:11:27,635 [batch-job-failedrecordspocBatch-work-manager.02] com.mulesoft.module.batch.engine.DefaultBatchEngine: Finished execution for instance '3b742880-98e1-11e5-9927-f0ea20524153' of job 'failedrecordspocBatch'. Total Records processed: 4. Successful records: 0. Failed Records: 4
INFO 2015-12-02 16:11:27,745 [batch-job-failedrecordspocBatch-work-manager.02] com.mulesoft.module.batch.engine.DefaultBatchEngine:
****************************************************************************************************************************************************************
* - - + Exception Type + - - * - - + Step + - - * - - + Count + - - *
****************************************************************************************************************************************************************
* com.mulesoft.module.batch.exception.BatchException * Batch_Step * 1 *
* org.mule.api.serialization.SerializationException * Batch_Step1 * 4 *
****************************************************************************************************************************************************************
INFO 2015-12-02 16:11:27,823 [batch-job-failedrecordspocBatch-work-manager.02] com.mulesoft.module.batch.DefaultBatchStep: Step Batch_Step finished processing all records for instance 3b742880-98e1-11e5-9927-f0ea20524153 of job failedrecordspocBatch
然而,通过下面的链接,我知道很少有有效负载无法序列化这是链接:
所以,我明白我需要实现Kryo序列化程序,这是我第一次听到
那么,有人能帮助我如何在批处理步骤流中实现Kryo序列化程序的概念吗
如果需要任何澄清,请发表评论。这是如何链接到?是的,我再次编辑了标签?这是如何链接到?是的,我再次编辑了标签