java-如何通过JMS发送Kryo序列化对象?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何通过JMS发送Kryo序列化对象?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1341字,纯文字阅读大概需要2分钟。
内容图文
我想使用Kryo对对象进行反序列化,并通过JMS发送/接收它们.
我遇到的问题是,发送方和接收方双方必须注册具有相同ID的类.
Kryo有一个我使用的方法寄存器(类类型,整数ID).不幸的是,id是一个int(与Serializable接口使用的long serialVersionUID相比).如果我可以使用serialVersionUID来注册类,那就太好了.
你们如何通过网络使用Kryo?
解决方法:
您不必明确注册要使用Kryo序列化的每个类.注册课程的主要好处是:
>表演:Kryo第一次看到一个类时,它会生成一个ID,并使用该类的名称在序列化流中发送此ID.下次,Kryo仅发送ID,而不发送名称.如果该类已显式注册,则ID是已知的,并且Kryo永远不会发送该类的名称:您将在输出流中获得一些字节
>某些“安全性”:如果设置“需要注册”标志,Kryo将不会发送它不知道的类.然后,您可以过滤通过网络发送的数据
但是,注册一个类时,必须在任何地方以相同的顺序注册完全相同的类.并非总是可能的.
在您的情况下,JMS规范未定义有关类序列化的任何内容.这将取决于您使用的实现.如果您想要便携式的东西,可以在应用程序层中进行:
>使用Kryo将类序列化为字节数组
>通过带有BytesMessage的JMS发送此字节数组
>在您的MessageListener中,使用Kryo反序列化消息
由于您可以控制谁进行序列化/反序列化,因此可以在此处注册使用的类,也可以让Kryo自己生成ID
ActiveMQ不支持自定义序列化挂钩.您无法插入自己的序列化实现,因此也无法告诉ActiveMQ在发送ObjectMessage时使用Kryo(请参见ActiveMQObjectMessage).您必须使用此BytesMessage.也许其他JMS提供者提供了这样的功能(JMS只是一个API规范,它没有定义消息的发送/序列化方式,只能访问API)
内容总结
以上是互联网集市为您收集整理的java-如何通过JMS发送Kryo序列化对象?全部内容,希望文章能够帮你解决java-如何通过JMS发送Kryo序列化对象?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。