2010-07-05 58 views
0

大家好ActiveMQ专家!为什么ActiveMQ TextMessage用空格填充1000字节?如何优化它?

我通过WireShark了解ActiveMQ“/ examples”生产者发送消息时发生了什么,它揭示了每个少于1000字节的TextMessage填充空格('或HEX 20),直到它填满1000字节。 (使用ActiveMQ的“本地”传输 - TCP“OpenWire”)

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

最重要的是,有没有一种方法来优化它,以便发送短消息不会导致几乎1K的不必要的空间开销?

谢谢!

干杯, O.K.

回答

1

客户端实现向消息添加空格是正确的(请参阅createMessageText方法)。这很简单,以致消息的大小是一样的。您可以在运行示例时更改大小(使用arg:-DmessageSize = <大小>),或者您可以更改ProducerTool,以便通过简单地编辑代码并再次运行代码来填充每条消息(Ant会编译它在运行之前)。我做过很多次干脆去掉空格,额外的文本添加到邮件,添加邮件标题,使用XML格式化消息体等

布鲁斯

+0

非常感谢,布鲁斯! 现在我真的很尴尬,因为我自己没有弄明白(没有看生产者代码)。 另外,你能推荐一个描述OpenWire协议下发生的低级通信的资源吗? 有这个网页: http://activemq.apache.org/openwire-version-2-specification.html 但它主要描述格式和编码,当我更多的是在客户端和服务器之间发生对话序列之后在连接建立,发送,确认,“保持活力”等 谢谢! 干杯, O.K. PS:享受您的电子书草稿 - 什么时候最终到来? – 2010-07-06 03:40:41

+0

没问题,奥列格。 ActiveMQ源代码中唯一可以找到更多有关OpenWire细节的地方。根据曼宁的说法,这本书或许应该在9月/ 10月出版。我们会看到。 – bsnyder 2010-07-08 19:15:50