java - 在 JMS 中使用 bytemessage 代替 objectMessage

标签 java json performance jakarta-ee jms

我在我的架构中以多种方式使用 JMS。

延迟和性能是我们架构中非常重要的因素。

我读到,使用 jms 和 ObjectMessage 来传递消息中的整个 java 对象需要大量的性能。

替代解决方案是转换为 json、protobuff 并将消息作为字节消息/文本消息发送。

您能帮我解释一下吗:

  1. 如果我选择 json。从 String 转换为 json 后我应该发送消息
    作为测试还是作为 ByteArray? (有什么区别吗?)

  2. 是发送方将String转换为json的总时间
    反之亦然,在消费者方面会比仅发送 ObjectMessage 更少/更多?

谢谢, 射线。

最佳答案

只是我的2美分

1) IMO,您应该使用 TextMessage 发送 String 中的数据并将其反序列化为 Json 对象。 我无法告诉您确切的性能统计数据,但我猜序列化比编码更好,因为当您将其重建为对象时,它的开销更少。

Comparing Marshalling with serialization

2)此外,只需避免将数据作为对象流发送, 消息可以由非基于 java 的消息解决方案接收和处理

来自Java Dzone

A big downside of Externalizable is that you have to maintain this logic yourself – if you add, remove or change a field in your class, you have to change your writeExternal/readExternal methods to account for it.

关于java - 在 JMS 中使用 bytemessage 代替 objectMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15218386/

相关文章:

java - 更改并忘记应用程序的密码请勿重复使用相同的代码

php - 除非浏览器完全关闭并重新打开,否则数据库条目不会显示在 IE 中

sql - SQL Server View 的性能测试产生了令人惊讶的结果。为什么?

mysql - 使用多个 JOIN 查询 1k 条条目最多需要 10 秒

java - 如何将工作类注入(inject)到 ServerSocket 实现中?

java - 无法从另一个目录运行 ant

python - 我的 Python 脚本在同一目录中找不到 JSON 文件

performance - 如何优化对大型数据集的查询?

java - Android 中的相机 Intent 问题

java - 解析 JSON 字符串