1.1 简介
1.1.1 ActiveMQ 概述
Apache ActiveMQ 是 Apache 软件基金会所研发的开放源代码消息中间件;由于 ActiveMQ 是一个纯 Java 程序,因此只需要操作系统支持 Java 虚拟机,ActiveMQ 便可执行。ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider 实现。
1.1.2 JMS 概述
JMS(Java Messaging Service) 是 Java 平台上有关面向消息中间件的技术规范,它便于消息系统中的 Java 应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。JMS 本身只定义了一系列的接口规范,是一种与厂商无关的 API,用来访问消息收发系统。它类似于 JDBC(java Database Connectivity):这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商目前都支持 JMS,包括 IBM 的 MQSeries、BEA 的 Weblogic JMS service 和 Progress 的 SonicMQ。
JMS 能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS 客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。JMS 定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。
♞ TextMessage
:个字符串对象
♞ MapMessage
:套名称 - 值对
♞ ObjectMessage
:个序列化的 Java 对象
♞ BytesMessage
:个字节的数据流
♞ StreamMessage
:Java 原始值的数据流
1.1.3 JMS 消息传递类型
JMS 有两种消息通信模型,点对点模型(point to point)(p2p)和发布/订阅模型(pub/sub),ActiveMq 实现了 JMS 接口,同样,ActiveMq 也实现了这两种模型。 点对点模型规定了一个消息只能被一个接收者接收,而发布/订阅模型允许一个消息可以被多个消息接收者接收。
☞ 点对点
当一个消息生产者产生一个消息时,会把消息放入一个队列(Queue)中,然后消息消费者从 Queue 中读取消息,如果同时有多个消费者读取消息,ActiveMq 保证消息只会被一个消费者读取到,消费者读取到消息之后需要向 ActiveMq 发送一条确认信息,确认消息已经被接收,此时,队列(Queue)中的消息出队,整个流程就处理完了。
☞ 发布/订阅
发布/订阅模式允许一条消息可以被多个订阅了该 Topic 的消息消费者接收,当一个消息生产者产生一个消息时,会把消息放入一个 Topic 中,然后监听在此 Topic 上的消息消费者都能接收到消息。
1.2 安装 ActiveMQ
1.2.1 Windows 平台
☞ 下载
首先去 ☛ ActiveMQ 官网 下载 Windows 版本的压缩包
☞ 安装
将下载好的压缩包放到合适的路径下,解压。你就得到了一个安装好的 ActiveMQ。
☞ 启动
进入 bin 目录,打开 cmd 执行 ./activemq start
命令,
1.2.2 Linux 平台
☞ 下载
首先去 ☛ ActiveMQ 官网 下载 Unix/Linux/Cygwin 版本的压缩包,将其上传至服务器。
☞ 解压、赋权
使用 tar zxvf apache-activemq.tar.gz
将 ActiveMQ 解压,然后使用 chmod 777 apache-activemq
给解压好的文件赋权。
☞ 启动
进入 apache-activemq\bin
目录,执行 ./activemq start
启动 MQ,注意要先安装好 JDK 才能正常启动。
1.2.3 ActiveMQ 管理界面
在浏览器输入服务器 IP + 8161 端口进入 ActiveMQ 登录界面,输入默认账号:admin,默认密码:admin 点击 Manage ActiveMQ broker
进入主管理界面。
点击对应的选项卡进入点对点消息列表(Queues)和发布/订阅消息列表(Topics),列表各列信息含义如下:
♞ Name
:名称
♞ Number Of Pending Messages
:等待消费的消息 这个是当前未出队列的数量。
♞ Number Of Consumers
:消费者 这个是消费者端的消费者数量
♞ Messages Enqueued
:进入队列的消息 进入队列的总数量,包括出队列的。
♞ Messages Dequeued
:出了队列的消息 可以理解为是消费这消费掉的数量