ActiveMQ
一、ActiveMQ简介
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。
ActiveMQ拥有多语言和协议编写客户端。
语言:Java、C、C++、C#、Ruby、Perl、python、PHP
应用协议:OpenWire、Stomp、WS、Notifaction、XMPP、AMQP。
完全支持JMS1.1和J2EE1.4规范(持久化、XA消息,事务);
对Spring的支持,ActiveMQ可以很容易内嵌到使用spring的系统里去。
除了常见的J2EE服务器(如Geronimo,JBoss4,GlassFish,WebLogic)的测试,其中通过JCA1.5 resource adaptors的配置可以让ActiveMQ可以自动化的部署到任何兼容J2EE1.4商业服务器上。
支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA,支持通过JDBC和journal提供高速的消息持久化。
从设计上保证了高性能的集群,客户端-服务器,点对点。
支持Ajax,支持与Ajax的整合,Webservices
可以很容易的调用内嵌JMS provider,进行测试
二、ActiveMQ相关概念
1,Desination
目的地,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 & Sububscribe,消息的发布订阅模型,是基于Topic实现的消息处理方式。