ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多种语言的客户端和协议,而且可以非常容易的嵌入到企业的应用环境中,并有许多高级功能。
MQ
首先简单的介绍一下MQ,MQ英文名MessageQueue,中文名也就是大家用的消息队列,干嘛用的呢,说白了就是一个消息的接受和转发的容器,可用于消息推送。
下面介绍一下ActiveMQ的消息队列模型
1、 Point-to-Point(P2P)
2、 Publish/Subscribe(Pub/Sub)
P2P
- 涉及到的概念
①消息队列(Queue)
②发送者(Sender)
③接收者(Receiver)
④每个消息都被发送到一个特定的队列,接收者从队列中获取消息。
队列保留着消息,直到他们被消费或超时。
- P2P的特点
①每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)
②发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,
不管接收者有没有正在运行,它不会影响到消息被发送到队列
③接收者在成功接收消息之后需向队列应答成功
如果你希望发送的每个消息都应该被成功处理的话,那么你需要P2P模式。
Pub/Sub
- 涉及到的概念
①主题(Topic)
②发布者(Publisher)
③订阅者(Subscriber)
客户端将消息发送到主题。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
- Pub/Sub的特点
①每个消息可以有多个消费者。
②发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者。
它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。
③为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。
这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
如果你希望发送的消息可以不被做任何处理、或者被一个消息者处理、
或者可以被多个消费者处理的话,那么可以采用Pub/Sub模型
消息中间件有很多的用途和优点:
1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传送到另外一个模块。
2. 负责建立网络通信的通道,进行数据的可靠传送。
3. 保证数据不重发,不丢失。
4. 能够实现跨平台操作,能够为不同操作系统上的软件集成技工数据传送服务。
下载ActiveMQ
官方网站:http://activemq.apache.org/
本文中使用的是apache-activemq-5.13.2 Windows版。
从它的目录来说,还是很简单的:
bin存放的是脚本文件
conf存放的是基本配置文件
data存放的是日志文件
docs存放的是说明文档
examples存放的是简单的实例
lib存放的是activemq所需jar包
webapps用于存放项目的目录
启动ActiveMQ
我们了解activemq的基本目录,下面我们运行一下activemq服务。
双击bin目录下的activemq.bat脚本文件或运行自己电脑版本下的activemq.bat。
测试
ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动 netstat -an|find “61616”
C:\Users>netstat -an|find "61616"
TCP 0.0.0.0:61616 0.0.0.0:0 LISTENING
TCP [::]:61616 [::]:0 LISTENING
监控
ActiveMQ默认启动时,启动了内置的jetty服务器,提供一个用于监控ActiveMQ的admin应用。
admin:http://127.0.0.1:8161/admin/
用户名和密码都是admin
至此,服务端启动完毕
停止服务器,只需要按着Ctrl+Shift+C,之后输入y即可。
文章参考:
http://blog.csdn.net/jiuqiyuliang/article/details/47160259
ActiveMQ简单的HelloWorld实例:
http://blog.csdn.net/jiuqiyuliang/article/details/48608237
Spring和ActiveMQ整合的完整实例