0

在当前项目中,我们一直使用 jms 将 xml 作为文本消息发送。我不明白他们为什么不简单地发送 Objectmessage,为什么有处理 xml 的开销?

所以问题基本上归结为为什么在 jms 中使用 xml ?

4

2 回答 2

6

这一切都归结为对消息序列化格式的设计决策。

起初,Objectmessage 似乎是最有效的机制。但是,它在以下情况下效果不佳:

  1. 消息验证(XML 模式充当消息契约的一种形式)
  2. 发送方和接收方之间的软件版本差异(消息版本控制)
  3. 与非 Java 系统的通信

在 XML 中序列化消息并不能完全解决这些问题,但某种形式的人类可读消息格式可以进行调试。

最后,XML 并不是唯一的游戏。JSON 作为 XML 的替代品正变得越来越流行。Protocol Buffers是 Google 的消息传递协议,对一些问题和 Google 的解决方案有很好的概述。

于 2012-04-29T00:06:53.513 回答
2

在这种情况下使用 XML 的主要好处是您消除了对在通信两端使用相同软件堆栈的依赖。

我曾经遇到一个客户,他正在与一个关键供应商交换数据,他在一端创建他们的 SQL Server 数据库的每日映像,然后在另一端恢复它。结果:任何一方都无法升级到新版本的 SQL Server,除非对方也在同一天升级。

此外,正如 O'Connor 还提到的,XML 使得随着需求的变化扩展消息内容相对容易,而无需每个人都必须同时实现更改。

于 2012-04-29T07:46:15.243 回答