【问题标题】:Why is ActiveMQ TextMessage padded with spaces to fill in 1000 bytes?? How to optimize it?为什么 ActiveMQ TextMessage 用空格填充 1000 字节?如何优化它?
【发布时间】:2011-03-11 19:24:54
【问题描述】:

您好所有 ActiveMQ 专家!

我通过 WireShark 查看了 ActiveMQ“/examples”生产者发送消息时的幕后情况,它显示每个短于 1000 字节的 TextMessage 都用空格(''或 HEX 20)填充,直到它恰好填满 1000 字节. (使用 ActiveMQ 的“本机”传输 - TCP“OpenWire”)

想知道这是做什么的吗? (我假设 ActivemQ JMS 客户端实现) 但是为什么??

最重要的是,有没有办法对其进行优化,使发送短消息不会产生近 1K 的不必要空间开销?

谢谢!

干杯, 好的。

【问题讨论】:

    标签: jms activemq


    【解决方案1】:

    您是正确的,客户端实现正在向消息中添加空格(请参阅createMessageText 方法)。这只是为了使消息大小均匀。您可以在运行示例时更改大小(使用参数:-DmessageSize=),也可以更改ProducerTool,这样它就不会通过简单地编辑代码并再次运行它来填充每条消息(Ant 将在运行之前编译它)。我已经这样做了很多次,以完全删除空格,向消息中添加额外的文本,添加消息标题,使用 XML 格式化消息正文等。

    布鲁斯

    【讨论】:

    • 非常感谢,布鲁斯!我现在真的很尴尬,因为我自己没有弄清楚(没有查看生产者代码)。另外,您能否推荐一个描述 OpenWire 协议下发生的低级通信的资源?有这个页面:activemq.apache.org/openwire-version-2-specification.html 但它主要描述格式和编码,当我更关注在连接建立、发送、确认、“保持活力”等过程中客户端和服务器之间发生的对话序列时,谢谢!干杯,O.K. PS:享受你的电子书草稿 - 什么时候出?
    • 没问题,奥列格。在 ActiveMQ 源代码中可以找到更多关于 OpenWire 的详细信息。根据曼宁的说法,这本书可能会在 9 月/ 10 月出版。我们会看到的。
    猜你喜欢
    • 2021-04-07
    • 2012-09-17
    • 2012-03-21
    • 2011-07-29
    • 2010-12-20
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多