概述

Apache ActiveMQ™ 是最流行和强大的开源的消息中间件。 ActiveMQ是速度快的,支持多语言并且跨协议,易于企业集成并且有许多高级特性,完全支持JMS 1.1 和 J2EE 1.4 规范。Apache ActiveMQ 在 Apache 2许可下发布。

能用 ActiveMQ 干什么

发消息

消息类型

  1. 根据消息模型分

    • Queue - 点对点消息传送模型(P2P)

      在点对点消息传送模型中,应用程序由消息队列,生产者,消费者组成。每一个消息发送给一个特殊的消息队列,该队列保存了所有发送给它的消息(除了被接收者消费掉的和过期的消息)。

      特点如下:

      a. 每一条消息都会有一个生产者和一个消费者

      b. 消息生产者和消费者并没有时间依赖性。

      c. 当消费者收到消息的时候,会发送确认收到通知(acknowledgement)。

      e. 点对点消息模型图

      点对点消息模型图

    • Topic - 发布/订阅消息传送模型

      消息会发送给一个主题,多个订阅者可以监听同一个主题,主题的所有订阅者都会接收到此消息的副本。

      特点如下:

      a. 一个消息可以传递给多个订阅者

      b. 发布者和订阅者有时间依赖性,只有当客户端创建订阅后才能接受消息,且订阅者需一直保持活动状态以接收消息。

      c. 为了缓和这样严格的时间相关性,JMS 允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。

      d. 发布/订阅消息模型图:

      发布/订阅消息模型图

  2. 根据消息持久性分

    • 持久化消息

      保存在持久化存储介质或数据库,服务重启不会丢失。

    • 非持久化消息

      保存在内存中,服务重启后丢失。

接收消息

在 JMS 规范中,消息的接收可以使用以下两种方式:

1. 同步方式:
使用同步方式接收消息的话,消息订阅者调用receive()方法。在receive()中,消息未到达或在到达指定时间之前,方法会阻塞,直到消息可用。

2. 异步方式:
使用异步方式接收消息的话,消息订阅者需注册一个消息监听者,类似于事件监听器,只要消息到达,JMS服务提供者会通过调用监听器的onMessage()递送消息。

JMS 编程接口

JMS 编程流程

JMS编程流程

results matching ""

    No results matching ""