有没有一种方法可以完全交换使用Apache Beam处理序列化的方式?

问题描述

我将Kotlin与Apache Beam一起使用,并且我有一组DTO相互引用,并且对于使用Kotlinx Serialization的任何编码器而言,它们都非常适合序列化。当我尝试将它们与Beam一起使用时,最终会遇到问题,因为它正在寻找所有对象,类型参数和嵌套对象来实现Java Serializable接口。问题是,我无法用所有对象类型来控制它,因为某些对象来自第三方库。

我已经实现了自己的使用Kotlinx序列化的CustomCoder<T>类型,但是我遇到了自定义编码器无法序列化的问题,特别是由于Kotlinx序列化插件生成的Companion对象序列化器未序列化。由于它是编译时生成代码,因此我实际上没有控制权,也无法将其标记@Transient。我尝试在编码器上实现Externalizable,但当我为未实现T或没有嵌套类型参数的Serializable传递类型参数时,它就失败了。 / p>

此外,Kotlinx序列化还不错,因为它不使用反射。如果我可以以某种方式换掉序列化机制,而不必完全依靠标准Java序列化方法,或者以某种方式实现Externalizable,而这只是我自己的方式,那将使我当前的很多头痛都消失了。序列化机制,并忽略type参数。有什么解决办法吗?我不介意它有多骇人,即使解决方案涉及弄乱Gradle构建配置中的内容以覆盖某些内容。我只是不确定如何去做,所以任何指针都会有很大帮助!

或者,如果我放弃Kotlinx序列化,是否有任何简单的解决方案可以使任意复杂的数据类型序列化仅与Java一起使用,甚至使用反射,而无需进行大量的手工操作来处理编码和解码?我觉得也许我只是缺少一些明显的东西。这是我与Apache Beam的第一个项目,但是到目前为止,谷歌几乎没有帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)