2010-07-05 57 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