HornetQ(官網:http://www.jboss.org/hornetq)是一個支持集羣和多種協議,可嵌入、高性能的異步消息系統。HornetQ完全支持JMS,HornetQ不但支持JMS1.1 API同時也定義屬於自己的消息API,這可以最大限度的提升HornetQ的性能和靈活性。hornetq一直在更新,將會支持更多的協議。現在2.2.14爲最新的穩定版本。
項目中使用了HornetQ的一個原因,是其高性能,且完全支持JMS接口(如果有一天項目需要,使用其它的消息系統工具,只要按照對應的JMS接口再實現即可),定義了自己的消息API,相關接口使用更方便。(項目中按照ActiveMQ也實現了一套,可切換,不過維護起來比較麻煩。)
(另外此在InfoQ中一篇與MectiveMQ性能比較,較早的一篇報道:http://www.infoq.com/cn/news/2010/02/hornetq2-vs-activemq5.3)
二.部署
1.下載地址:(http://downloads.jboss.org/hornetq/hornetq-2.2.14.Final.zip)
2.對於配製文件與運行地址需要注意地方:
在對應的config目錄下,有對應的配製文件,供參考,一般自己私有項目,新建一個目錄new,然後把對應的配製文件拷貝到new目錄進行配製即可。以對應的config\stand-alone\non-clustered 目錄爲例,使用非集羣配製,主要修改的配製文件爲hornetq-configuration.xml
對應的topic事件配製:
<address-settings>
<!--default for catch all-->
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
<address-full-policy>BLOCK</address-full-policy>
</address-setting>
</address-settings>
可以跟據需求,定義topic對應的name,然後修改match屬性。
對應的消息隊列配製:
<queues>
<queue name="xxx">
<address>xxx</address>
<durable>true</durable>
</queue>
</queues>
也即跟據需求定義對應的name,address.
定義完以後,修改對應的bin目錄下的run.sh文件。值得注意是修改對應的目錄結構,定義好對應的進程pid,log目錄,指定對應的啓動時jvm參數-Xmx,-Xms內存(指定如果超過系統最大內存,會啓動不成功)
啓動過,查看對應的log目錄,可觀察是否啓動成功。
另外還可以配製集羣,主從,正常來說hornetq單機性能已經非常優秀,一定應用定義主從即可。對於集羣,可跟據實現情況使用。
Hornetq相關文檔也是比較詳細,具體使用時可參考(http://www.jboss.org/hornetq/docs)