批处理 - 无法反序列化对象

时间:2017-05-25 08:03:24

标签: mule deserialization mule-studio batching

我最近一直在使用Batch处理器,在测试中它一直运行良好。

我已将它添加到我们的主要项目流程中,我遇到了一个奇怪的问题。

Batch进程本身只包含一个Logger,发送给它的有效负载是LineIterator。

我遇到的问题是它抛出了一个SerializationException。奇怪的是它第一次运行它会在运行时抛出异常。之后它将无法编译,抛出相同的异常。

这是来自流程的批处理过程以及无法构建时的相关堆栈信息。完整跟踪附加到Mule论坛上的这篇文章:https://forums.mulesoft.com/questions/65671/batch-process-could-not-deserialize-object.html

class MyTableViewCell: UITableViewCell {

    override func awakeFromNib() {

        super.awakeFromNib()
        self.backgroundColor = .clear            
        self.contentView.backgroundColor = .clear

    }
}

关于导致这种奇怪行为的原因的任何想法?

更新

只是添加一些上下文。我正在尝试迭代从SFTP读取的文件中的行。

此端点本身是在Java组件的流中创建的:

 <batch:job name="revenue-batch-Flow" block-size="10">
 <batch:process-records>
     <batch:step name="Batch_Step" accept-expression="#[!org.apache.commons.lang.StringUtils.isBlank( payload )]">
         <logger message="#[payload]" level="INFO" doc:name="Logger"/>
     </batch:step>
 </batch:process-records>
</batch:job>

 Caused by: com.esotericsoftware.kryo.KryoException: java.lang.UnsupportedOperationException
 Serialization trace:
 value (org.mule.transformer.types.TypedValue)
 properties (org.mule.session.DefaultMuleSession)
 session (org.mule.DefaultMuleEvent)
 muleEvent (com.mulesoft.module.batch.DefaultBatchJobInstance)

我刚检查过,我可以在本地批量处理同一个文件,因此这个端点或其配置存在问题。我可以配置此端点以将文件放在临时目录中并从那里读取吗?

3 个答案:

答案 0 :(得分:1)

批处理作业拆分原始有效负载(必须是Collection或Iterator)将分割的消息(包括有效负载)序列化到其持久批处理队列中。

您的消息有效负载(拆分后)是否可序列化?

另一个问题是持久性:尝试检查&#34;清除应用程序数据&#34;在运行配置中。如果没有帮助,请删除工作区中的目录/mule/.mule/.mule/。

您可能知道批处理作业文档:

https://docs.mulesoft.com/mule-user-guide/v/3.8/batch-processing

答案 1 :(得分:0)

我们最终发现了这个问题。

我们使用的是不可变映射类型的会话变量,虽然在批处理过程中没有使用,但导致上述错误。

在批量输入阶段中删除此变量后,没有其他问题。

答案 2 :(得分:0)

在任意点Studio Mule中->如@rbutenuth所说,“清除应用程序数据”对我有用