ActiveMQ是Apache的一个开源项目,它是一个能力强劲的开源消息总线,也是一个中间件产品。它是JMS的一个实现。
在介绍ActiveMQ之前,先来复习一下J2EE中的JMS规范。
JMS是Java Message Service的简称,用来发送异步消息,在不同系统和不同的模块之间我们可以利用它实现集成。
JMS有两个好处,第一个就是让模块之间或者系统之间的耦合度降低,第二个是异步通信。
JMS的消息机制有2种模型,一种是Point to Point,表现为队列的形式。发送的消息,只能被一个接收者取走;另一种是Topic,可以被多个订阅者订阅,类似于群发。
- ConnectionFactory,用于 jms client 获取 与 jms provider 的连接。不同的jms产品,对这个接口有不同的实现,比如ActiveMQ,这个接口的实现类是ActiveMQConnectionFactory 。
- Connection , 是由 ConnectionFactory 产生. 表示jms client 和 jms provider的链接.
- Session 是由Connection 产生的,表示一个会话。Session是关键组件, Message、Provider/Consumer、Destination 都是在Session上创建的.
- Message 传输的消息。 里面包括head、properties、body,其中head是必选的。
- Destination,消息源,对发送者来说 是消息发到哪里去;对接收者来说就是从哪里取消息。Desination有2个子接口,Queue 和 Topic,分别对应上面提到的两种模型。
- MessageProducer,是消息发送者,创建这个组件的代码类似:
//创建一个Queue
destination = session.createQueue("SongLiGuo_FirstQueue");
//得到消息生产者【发送者】
messageProducer = session.createProducer(destination);
可以注意到,这里需要把Destination作为参数,传入createProducer()方法,这说明消息发送者是绑定到Destination上的,这个发送者发送的消息,会发送到这个绑定的destination上.
- MessageConsumer,是消息接收者,和Message Producer是相反的一种组件