JMS基本概念http://blog.csdn.net/jiuqiyuliang/article/details/46701559
ActiveMQ简单介绍以及安装 http://blog.csdn.net/jiuqiyuliang/article/details/47160259
ActiveMQ简单的HelloWorld实例http://blog.csdn.net/jiuqiyuliang/article/details/48608237
Spring和ActiveMQ整合的完整实例http://blog.csdn.net/jiuqiyuliang/article/details/48758203
本文很适合初学者了解大致概念
JMS(消息通讯的规范)
JMS(JAVA Message Service,java消息服务)API
是一个消息服务的表中或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接受和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。
基本概念
消息模型
Point-to-Point (P2P) 点对点
Publish/Subscribe (Pub/Sub) 发布订阅
P2P
a、P2P模式图
b、涉及概念
- 消息队列(Queue)
- 发送者(Sender)
- 接受者(Receiver)
- 每个消息都被发送到一个特定的队列,接受者从队列中获取消息。队列保留着消息,直到他们被消费或超时。
c、P2P特点(如果你希望发送的每个消息都应该被成功处理的话,就使用P2P模式)
- 每个消息只有一个消费者(即一旦被消费,消息就不再消息队列中)
- 发送者和接受者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接受者有没有正在运行,它不会影响到消息被发送到队列
- 接受者在成功接收消息之后需向队列应答成功
Pub/Sub
a、Pub/Sub模式图
b、涉及概念
- 主题(Topic)
- 发布者(Publisher)
- 订阅者(Subscriber)
多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。
c、Pub/Sub特点(如果你希望发送的消息可以不被做任何处理,或者被一个消息者处理,就采用Pub/Sub模型)
- 每个消息可以有多个消费者
- 发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而却为了消费消息,订阅者必须保持运行的状态。
- 为了缓和这杨严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。
消息的消费
在JMS中,消息的产生和消费时异步的。对于消费来说,JMS的消息者可以通过两种方式来消费消息。
1、同步
订阅者或接受者调用receive方法来接受消息,reveive方法在能够接受到消息之前(或超时之前)将一直阻塞。
2、异步
订阅者或接受者可以注册成为一个消息监听器。当消息到达之后,系统自动调用监听器onMessage方法
JMS编程模型
ConnectionFactory
创建 Connection 对象的工厂。针对两种不同的jms消息模型,分别有 QueueConnectionFactory 和 TopicConnectionFactory 两种。可以通过 JNDI 查找 ConnectionFactory 对象Destination
Destination的意思是消息生产者的消息发送目标或者说消息消费者的消息来源。对于消息生产者来说,它的Destination是某个队列(Queue)或某个主题(Topic);对于消费消费者来说,它的Destination也是某个队列或主题。Connection
Connection表示在客户端和JMS系统之间建立的链接(对TCP/IP socket的包装)。Connection可以产生一个或多个session。跟ConnectionFactory一样,Connection也有两种类型:QueueConnection和TopicConnection。Session
Session是我们操作消息的接口。可以通过session创建生产者、消费者、消息等。Session提供了事务的功能。当我们需要使用session发送/接受多个消息时,可以将这些发送/接受动作放到一个事务中。同样,也分QueueSession和TopicSession。消息的生产者
消息生产者由Session创建,并用于将消息发送到Destination。同样,消息生产者分两种类型:QueueSender和TopicPublisher。可以调用消息生产者的方法(send和publish)发送消息。消息消费者
消息消费者有Session创建。用于接收被发送到Destination的消息。两种类型:QueueReceiver和TopicSubscriber。可分别通过session的createReceiver(Queue)和createSubscriber(Topic)来创建。当然,也可以session的createDurableSubscriber方法来创建持久化的订阅者。MessageListener
消息监听器。如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessage方法。
企业消息系统的好处
应用程序A将Message发送到服务器上,然后应用程序B从服务器中接受A发来的消息,通过下图来分析一下JMS的好处:
- 提供消息灵活性
- 松散耦合
- 异步性
深入了解
由于博主写的很好,就不再进行复制粘贴了…