一.介绍
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)