学习ActiveMQ

ActiveMQ 官网: http://activemq.apache.org

ActiveMQ5.10.x 以上版本必须使用 JDK1.8 才能正常使用。

ActiveMQ5.9.x 及以下版本使用 JDK1.7 即可正常使用。

学习ActiveMQ,首先了解一些概念

1 什么是 ActiveMQ

ActiveMQ Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持 JMS1.1 J2EE 1.4 规范的JMS Provider 实现,尽管 JMS 规范出台已经是很久的事情了,但是 JMS 在当今的 J2EE 应用中间仍然扮演着特殊的地位。

2 什么是消息

消息是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;

也可以更复杂,可能包含嵌入对象。

什么是消息队列

消息队列是在消息的传输过程中保存消息的容器。

4 常用消息服务应用

4.1ActiveMQ

ActiveMQ Apache 出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持 JMS1.1 J2EE 1.4 规范的 JMS Provider 实现。

4.2RabbitMQ

RabbitMQ 是一个在 AMQP 基础上完成的,可复用的企业消息系统。他遵循 Mozilla Public License 开源协议。开发语言为 Erlang

4.3RocketMQ

由阿里巴巴定义开发的一套消息队列应用服务。

一、消息服务的应用场景

消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系,也不需要受对方的影响,即解耦和。

学习ActiveMQ

二、JMS

1 什么是 JMS

JMSJava Messaging Service)是 Java 平台上有关面向消息中间件的技术规范,它便于消息系统中的 Java 应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口,简化企业应用的开发。

2 JMS 模型

 2.1点对点模型(Point To Point)

 生产者发送一条消息到 queue,只有一个消费者能收到。

学习ActiveMQ

 2.2发布订阅模型(Publish/Subscribe)

 发布者发送到 topic 的消息,只有订阅了 topic 的订阅者才会收到消息。

学习ActiveMQ

三、安装ActiveMQ(Linux)

1 将下载的安装文件传到虚拟机中后解压

    tar -zxf apache-activemq-5.9.0-bin.tar.gz

2 由于不同虚拟机情况可能不一样,所以可以检查下权限

    ls -al apache-activemq-5.9.0/bin

    如果权限不足,则无法执行,需要修改文件权限:

    chmod 755 activemq

3 复制应用至本地目录

cp -r apache-activemq-5.9.0 /usr/local/activemq

4 启动ActiveMQ

  /usr/local/activemq/bin/activemq start

  启动后查看下进程,如下图表示启动成功

学习ActiveMQ

5 使用浏览器访问管理界面

我的虚拟机ip:192.168.37.140

用户名: admin

密码: admin

ActiveMQ 使用的是 jetty 提供 HTTP 服务.启动稍慢,建议短暂等待再访问测试.

见到如下界面代表服务启动成功

学习ActiveMQ

6 关于端口的修改

   默认端口是8161,如果想要更改

学习ActiveMQ

7 修改用户名和密码

修改 conf/users.properties 配置文件.内容为: 用户名=密码

保存并重启 ActiveMQ 服务即可.

8 重启 ActiveMQ

/usr/local/activemq/bin/activemq restart

9 关闭 ActiveMQ

/usr/local/activemq/bin/activemq stop

10 配置文件 activemq.xml

配置文件中,配置的是 ActiveMQ 的核心配置信息. 是提供服务时使用的配置. 可以修改

启动的访问端口. java 编程中访问 ActiveMQ 的访问端口.

默认端口为 61616.

使用协议是: tcp 协议.

修改端口后, 保存并重启 ActiveMQ 服务即可

11 ActiveMQ目录介绍

学习ActiveMQ

从它的目录来说,还是很简单的:

* bin 存放的是脚本文件

* conf 存放的是基本配置文件

* data 存放的是日志文件

* docs 存放的是说明文档

* examples 存放的是简单的实例

* lib 存放的是 activemq 所需 jar

* webapps 用于存放项目的目录

四、ActiveMQ术语

1 Destination

目的地,JMS Provider(消息中间件)负责维护,用于对 Message 进行管理的对象。

MessageProducer 需要指定 Destination 才能发送消息,MessageReceiver 需要指定 Destination 才能接收消息。

2 Producer

消息生成者,负责发送 Message 到目的地。

3 Consumer | Receiver

消息消费者,负责从目的地中消费【处理|监听|订阅】Message

4 Message

消息,消息封装一次通信的内容。

五、ActiveMQ 常用 API 简介

下述 API 都是接口类型,由定义在 javax.jms 包中.

JMS 标准接口定义.

1 ConnectionFactory

链接工厂, 用于创建链接的工厂类型.

2 Connection 链接. 用于建立访问 ActiveMQ 连接的类型, 由链接工厂创建.

3 Session

会话, 一次持久有效有状态的访问. 由链接创建.

4 Destination & Queue

目的地, 用于描述本次访问 ActiveMQ 的消息访问目的地. ActiveMQ 服务中的具体队列. 由会话创建.

interface Queue extends Destination

5 MessageProducer

消息生成者, 在一次有效会话中, 用于发送消息给 ActiveMQ 服务的工具. 由会话创建.

6 MessageConsumer

消息消费者【消息订阅者,消息处理者】, 在一次有效会话中, 用于从 ActiveMQ 服务中获取消息的工具. 由会话创建.

7 Message

消息, 通过消息生成者向 ActiveMQ 服务发送消息时使用的数据载体对象或消息消费者从 ActiveMQ 服务中获取消息时使用的数据载体对象. 是所有消息【文本消息,对象消息等】具体类型的顶级接口. 可以通过会话创建或通过会话从 ActiveMQ 服务中获取