ActiveMQ介绍
ActiveMQ是什么
ActiveMQ是Apache推出的,一款开源的,完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现的消息中间件(Message Oriented Middleware,MOM)
ActiveMQ能干什么
最主要的功能就是:实现JMS Provider,用来帮助实现高可用、高性能、可伸缩、 易用和安全的企业级面向消息服务的系统
ActiveMQ特点
完全支持JMS1.1和J2EE 1.4规范(持久化,XA消息,事务)
支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
可插拔的体系结构,可以灵活定制,如:消息存储方式、安全管理等 很容易和Application Server集成使用
多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP
从设计上保证了高性能的集群,客户端-服务器,点对点 可以很容易的和Spring结合使用
支持通过JDBC和journal提供高速的消息持久化
支持与Axis的整合
消息中间件介绍
MOM基本功能:
将信息以消息的形式,从一个应用程序传送到另一个或多个应用程序。
MOM主要特点:
1:消息异步接受,类似手机短信的行为,消息发送者不需要等待消息接受者的响应,减少软件多系统集成的耦合度;
2:消息可靠接收,确保消息在中间件可靠保存,只有接收方收到后才删除消息,多个消息也 可以组成原子事务
消息中间件的主要应用场景:
在多个系统间进行整合和通讯的时候,通常会要求:
1:可靠传输,数据不能丢失,有的时候,也会要求不能重复传输;
2:异步传输,否则各个系统同步发送接受数据,互相等待,造成系统瓶颈
目前比较知名的消息中间件: IBM MQSeries BEA WebLogic JMS Server Oracle AQ Tibco SwiftMQ
AcitveMQ:是免费的java实现的消息中间件
ActiveMQ安装和基本使用
下载并安装ActiveMQ服务器端
1:从http://activemq.apache.org/download.html下载最新的ActiveMQ
2:直接解压,然后拷贝到你要安装的位置就好了
主要配置文件分析
1 activemq.xml 就是 spring 配置文件. 其中配置的是 ActiveMQ 应用使用的默认对象组件. transportConnectors 标签 - 配置链 接端口信息的. 其中的端口号 61616 是 ActiveMQ 对 外发布的 tcp 协议访问端口. 就是 java 代码访问 ActiveMQ 时使用的端口. 2 jetty.xml spring 配置文件, 用于配置 jetty 服务器的默认对象组件. jetty 是类似 tomcat 的一个中间件容器. ActiveMQ 默认支持一个网页版的服务查看站点. 可以实现 ActiveMQ 中消息相关数据 的页面查看. 8161 端口, 是 ActiveMQ 网页版管理站点的默认端口. 在 ActiveMQ 网页版管理站点中,需要登录, 默认的用户名和密码都是 admin.
3 users.properties 内容信息: 用户名=密码 是用于配置客户端通过协议访问 ActiveMQ 时,使用的用户名和密码.
启动运行
1:普通启动:到ActiveMQ/bin下面,./activemq start
2:启动并指定日志文件 ./activemq start > /tmp/activemqlog
检查是否已经启动
ActiveMQ默认采用61616端口提供JMS服务,使用8161端口提供管理控制台服 务,执行以下命令以便检验是否已经成功启动,
ActiveMQ 使用的是 jetty 提供 HTTP 服务.启动稍慢,建议短暂等待再访问测试. 见到如下界面代表服务启动成功。
修改访问端口
ActiveMQ服务:
1:比如查看61616端口是否打开: netstat -an | grep 61616
2:也可以直接查看控制台输出或者日志文件
3:还可以直接访问ActiveMQ的管理页面:http://192.168.1.106:8161/admin/
默认的用户名和密码是admin/admin
关闭ActiveMQ,
可以用./activemq stop 暴力点的可以用ps-ef| grepactivemq 来得到进程号,然后kill掉
1 Destination 目的地,JMS Provider(消息中间件)负责维护,用于对 Message 进行管理的对象。 MessageProducer 需要指定 Destination 才能发送消息,MessageConsumer 需要指定 Destination 才能接收消息。
2 Producer 消 息 生成 者 (客 户 端、 生 成 消 息 ), 负 责 发送 Message 到 目 的地 。 应 用 接口 为 MessageProducer。在 JMS 规范中,所有的标准定义都在 javax.jms 包中。
3 Consumer【Receiver】 消息消费者(处理消息),负责从目的地中消费【处理|监听|订阅】Message。应用接口 为 MessageConsumer
4 Message 消息(Message),消息封装一次通信的内容。常见类型有:StreamMessage、BytesMessage、 TextMessage、ObjectMessage、MapMessage。
5 ConnectionFactory 链接工厂, 用于创建链接的工厂类型。 注意,不能和 JDBC 中的 ConnectionFactory 混 淆。
6 Connection 链接. 用于建立访问 ActiveMQ 连接的类型, 由链接工厂创建. 注意,不能和 JDBC 中的 Connection 混淆。
7 Session 会话, 一次持久有效有状态的访问. 由链接创建. 是具体操作消息的基础支撑。
8 Queue & Topic Queue 是队列目的地,Topic 是主题目的地。都是 Destination 的子接口。 Queue 特点: 队列中的消息,默认只能由唯一的一个消费者处理。一旦处理消息删除。 Topic 特点:主题中的消息,会发送给所有的消费者同时处理。只有在消息可以重复处 理的业务场景中可使用。
9 PTP Point to Point。点对点消息模型。就是基于 Queue 实现的消息处理方式。
10 PUB & SUB Publish & Subscribe 。消息的发布/订阅模型。是基于 Topic 实现的消息处理方式。