使用java内置`serialization`将对象传递给JMS队列是否安全?

时间:2014-01-24 10:20:07

标签: java serialization jms gson

我们在项目中使用一些jms服务器。传递对象时,我们有两个选择:

  1. 将邮件类标记为implements Serializable,然后直接传递。 (消息类只是一个简单的java bean)
  2. 使用Gson将它们序列化为json,然后在消费者端进行反序列化
  3. 多想想:

    1. 我们现在只是在内部队列中传递它们,这意味着它们都在一个JVM中运行
    2. 我们将来可能会转而使用外部队列
    3. 该邮件将来可能会嵌套字段
    4. 我更喜欢第一个选项,因为它很容易,并且性能比第二个更好。

      但是我的同事更喜欢第二个,他们说他们听说有一些问题(但他们并不完全确切)使用java内置序列化,他们可能有一天会遇到问题。

      我应该选择哪个选项? Java提供的内置序列化有什么问题吗?

1 个答案:

答案 0 :(得分:0)

如果您使用持久性JMS消息,则应使用文本格式作为Gson或XML,因为消息将在应用程序更新后继续存在。

使用序列化的java对象时,您可能会在应用程序更新后遇到问题,因为某些对象将不再可反序列化。然后,XML还具有明确定义的架构的优势。

当您使用非持久性JMS消息并且应用程序关闭时应该丢失所有消息时,可能会选择序列化的Java对象。但我会将它们作为最后的手段,因为处理这种格式确实是个大问题。