概述
Apache ActiveMQ™ 是最流行和强大的开源的消息中间件。 ActiveMQ是速度快的,支持多语言并且跨协议,易于企业集成并且有许多高级特性,完全支持JMS 1.1 和 J2EE 1.4 规范。Apache ActiveMQ 在 Apache 2许可下发布。
能用 ActiveMQ 干什么
发消息
消息类型
根据消息模型分
Queue - 点对点消息传送模型(P2P)
在点对点消息传送模型中,应用程序由消息队列,生产者,消费者组成。每一个消息发送给一个特殊的消息队列,该队列保存了所有发送给它的消息(除了被接收者消费掉的和过期的消息)。
特点如下:
a. 每一条消息都会有一个生产者和一个消费者
b. 消息生产者和消费者并没有时间依赖性。
c. 当消费者收到消息的时候,会发送确认收到通知(acknowledgement)。
e. 点对点消息模型图
Topic - 发布/订阅消息传送模型
消息会发送给一个主题,多个订阅者可以监听同一个主题,主题的所有订阅者都会接收到此消息的副本。
特点如下:
a. 一个消息可以传递给多个订阅者
b. 发布者和订阅者有时间依赖性,只有当客户端创建订阅后才能接受消息,且订阅者需一直保持活动状态以接收消息。
c. 为了缓和这样严格的时间相关性,JMS 允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
d. 发布/订阅消息模型图:
根据消息持久性分
持久化消息
保存在持久化存储介质或数据库,服务重启不会丢失。
非持久化消息
保存在内存中,服务重启后丢失。
接收消息
在 JMS 规范中,消息的接收可以使用以下两种方式:
1. 同步方式:
使用同步方式接收消息的话,消息订阅者调用receive()方法。在receive()中,消息未到达或在到达指定时间之前,方法会阻塞,直到消息可用。
2. 异步方式:
使用异步方式接收消息的话,消息订阅者需注册一个消息监听者,类似于事件监听器,只要消息到达,JMS服务提供者会通过调用监听器的onMessage()递送消息。
JMS 编程接口
JMS 编程流程