apache项目组织的activeMQ项目是JMS Provider的一个实现,也就是JMS服务器,消息服务器。
- Broker
在activeMQ中,Broker就是一个消息服务器实例。Broker既可以单独启动,也可以Embedded方式启动。独立启动是自己在独立一套JVM中运行,如果要访问该消息服务器必须通过网络传输协议才可以。以Embedded方式启动,是在应用程序内部启动该服务,Broker与Application是在一个JVM中运行。
以Embedded方式运行如下:
该方式基本上可以设置activeMq通过配置文件独立启动时所设置的所有参数。
- Transport
Broker启动之后,JMS等客户端如果要发布消息或者接收消息,则需要通过访问协议连接到该Broker服务器。这些访问协议就是Transport。
Broker在启动时,配置文件中可以配置当前启动的Broker可以支持那些Transport访问协议。
activeMQ提供了一些常用访问协议:
Transport | 说明 | 例子 |
The VM Transport | 如果Broker是以Embedded方式启动,在同一个虚拟机内,可以通过该方式访问消息机制。没有IO消耗。 | vm://brokerName?transportOptions |
The TCP Transport | tcp://hostname:port?key=value | |
The NIO Transport | 同TCP Transprot,只是采用new I/O接口,会有更好的性能。 | nio://localhost:61616 |
The SSL Transport | ssl://localhost:61616?trace=false | |
he UDP Transport | udp://localhost:8123 | |
The multicast Transport | multicast://address:port?transportOptions | |
The HTTP and HTTPS Transport | http://host:port |
连接到Topic队列
发送消息:
接收消息:
对Broker的管理和监控
如果需要对远程Broker服务进行管理和监控,比如查看服务器上有多少Destination,可以通过Broker启动的JMX服务来管理。
如果你配置了log4j,在Broker启动之后会有下列输出:
通过JDK自带的JMX客户端jconsole连接该地址,
另外也可以用第三方的activemq客户端,本人推荐一款免费软件activeMqBrower .
activeMq还提供了另外集中监测管理Broker的方式,比如Broker还实现了一种即时通信协议来管理服务器。
Broker服务器对消息的持久化