实战ActiveMQ集群与应用 下载本文

内容发布更新时间 : 2024/5/12 8:40:59星期一 下面是文章的全部内容请认真阅读。

1. ActiveMQ简介

MQ是一个消息中间件,比如:ActiveMQ、RabbitMQ、kafka都属于MQ,是MQ的产品。

1.1. 什么是ActiveMQ

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

主要特点:

1. 多种语言和协议编写客户端。语言: Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP。

2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)

3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性

4. 通过了常见J2EE服务器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上

5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA 6. 支持通过JDBC和journal提供高速的消息持久化

7. 从设计上保证了高性能的集群,客户端-服务器,点对点 8. 支持Ajax

9. 支持与Axis的整合

10. 可以很容易得调用内嵌JMS provider,进行测试

1.2. ActiveMQ的消息形式

对于消息的传递有两种类型:

1. 点对点模式,即一个生产者和一个消费者一一对应。

2. 发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。

JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现有消息格式的一些级别的兼容性。

· StreamMessage -- Java原始值的数据流 · MapMessage--一套名称-值对 · TextMessage--一个字符串对象

· ObjectMessage--一个序列化的 Java对象 · BytesMessage--一个字节的数据流

1.3. 消息中间件

基本功能:将信息以消息的形式,从一个应用程序传递到另一个或多个应用程序。 主要特点:

1. 消息异步接收

2. 消息可靠接受,确保消息在中间件可靠保存,只有接收方接收到后才删除信息,多个消息也可以组成原子事务

消息中间件的主要应用场景:

在多个系统间进行整合和通讯的时候,通常会要求: 1. 可靠传输

2. 异步传输,否则各个系统同步发送接收数据,互相等待,造成系统瓶颈。 比较知名的消息中间件:

IBM MQServies

BEA Weblogic JSM Server Oracle AQ Tibco SwiftMQ

ActiveMQ是一款免费的java实现的消息中间件。

2. ActiveMQ安装和基本使用 2.1. 安装

进入http://activemq.apache.org/下载ActiveMQ

2.2. ActiveMQ的使用方法

点对点:

发布/订阅:

工程需要添加jar包:

2.2.1. Queue

2.2.1.1. Producer

生产者:生产消息,发送端。

第一步:创建ConnectionFactory对象,需要指定服务端ip及端口号。 第二步:使用ConnectionFactory对象创建一个Connection对象。 第三步:开启连接,调用Connection对象的start方法。 第四步:使用Connection对象创建一个Session对象。

第五步:使用Session对象创建一个Destination对象(topic、queue),此处创建一个Queue对象。