ActiveMQ

ActiveMQ是什么

ActiveMQ是一个消息队列应用服务器。支持JMS规范


JMS概述

全称:Java Message Service,即为Java消息服务,是一套java消息服务的API标准。(标准即接口)

实现了JMS标准的系统,称之为JMS Provider。

消息队列

概念

消息队列是在消息的传输过程中保存消息的容器,提供一种不同进程或者同一进程不同线程直接通讯的方式。


Producer:消息生产者,负责产生和发送消息到 Broker;

Broker:消息处理中心。负责消息存储、确认、重试等,一般其中会包含多个 queue;

Consumer:消息消费者,负责从 Broker 中获取消息,并进行相应处理;


常见消息队列应用

(1)、ActiveMQ

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

(2)、RabbitMQ

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

(3)、RocketMQ

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

ActiveMQ能做什么

(1)实现两个不同应用(程序)之间的消息通讯。

(2)实现同一个应用,不同模块之间的消息通讯。


ActiveMQ下载

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

ActiveMQ下载地址:http://activemq.apache.org/download-archives.html


--可供下载的历史版本

--说明:

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

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




--根据操作系统,选择下载版本。(本教程下载Linux版本)



ActiveMQ主要特点

(1)支持多语言、多协议客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP

(2)对Spring的支持,ActiveMQ可以很容易整合到Spring的系统里面去。

(3)支持高可用、高性能的集群模式。



入门示例

需求

使用ActiveMQ实现消息队列模型。


配置步骤说明

(1)搭建ActiveMQ消息服务器。

(2)创建一个java项目。

(3)创建消息生产者,发送消息。

(4)创建消息消费者,接收消息。


第一部分:搭建ActiveMQ消息服务器

第一步:下载、上传至Linux

--说明:确保已经安装了jdk



第二步:安装到/usr/local/activemq目录

(1)解压到/usr/local目录下  

[root@node07192 ~]# tar -zxvf apache-activemq-5.9.0-bin.tar.gz -C /usr/local


(2)修改名称为activemq

[root@node07192 ~]# cd /usr/local/

[root@node07192 local]# mv apache-activemq-5.9.0/ activemq

第三步启动ActiveMQ服务器

--说明:ActiveMQ是免安装软件,解压即可启动服务。

[root@node07192 local]# cd activemq/bin

[root@node07192 bin]# ./activemq start


--查看ActiveMQ启动状态

[root@node07192 bin]# ./activemq status




第四步:浏览器访问ActiveMQ管理界面

Step1:查看ActiveMQ管理界面的服务端口。在/conf/jetty.xml中

--访问管理控制台的服务端口,默认为:8161

[root@node07192 bin]# cd ../conf

[root@node07192 conf]# vim jetty.xml




Step2:查看ActiveMQ用户、密码。在/conf/users.properties中:

--默认的用户名、密码均为amdin

[root@node07192 conf]# vim users.properties




Step3:访问ActiveMQ管理控制台。地址:http://ip:8161/

--注意:防火墙是没有配置该服务的端口的。

因此,要访问该服务,必须在防火墙中配置。


(1)修改防火墙,开放8161端口

[root@node07192 conf]# vim /etc/sysconfig/iptables



(2)重启防火墙

[root@node07192 conf]# service iptables restart


(3)登录管理控制台

--登陆,用户名、密码均为admin



--控制台主界面



--搭建ActiveMQ服务器成功!!!

第二部分:创建java项目,导入jar包

--导包说明:

ActiveMQ的解压包中,提供了运行ActiveMQ的所有jar。



--创建项目



第三部分:创建消息生成者,发送消息

--说明:ActiveMQ是实现了JMS规范的。在实现消息服务的时候,必须基于API接口规范。


JMS常用的API说明

下述API都是接口类型,定义在javax.jms包中,是JMS标准接口定义。ActiveMQ完全实现这一套api标准。

ConnectionFactory

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

Connection

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

Session

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

Destination  &  Queue & Topic

目的地,即本次访问ActiveMQ消息队列的地址,由Session会话创建。

(1)interface Queue extends Destination

(2)Queue:队列模型,只有一个消费者。消息一旦被消费,默认删除。

(3)Topic:主题订阅中的消息,会发送给所有的消费者同时处理。

Message

消息,在消息传递过程中数据载体对象,是所有消息【文本消息TextMessage,对象消息ObjectMessage等】具体类型的顶级接口,可以通过会话创建或通过会话从ActiveMQ服务中获取。


MessageProducer

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


MessageCustomer

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



我们定义的消息生产者和消费者,都是基于上面API实现的。

你可能感兴趣的:(ActiveMQ)