JMS基本概念

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平台创建、发送、接受和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。

  1. 基本概念

  2. 消息模型
    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编程模型

  1. ConnectionFactory
    创建 Connection 对象的工厂。针对两种不同的jms消息模型,分别有 QueueConnectionFactoryTopicConnectionFactory 两种。可以通过 JNDI 查找 ConnectionFactory 对象

  2. Destination
    Destination的意思是消息生产者的消息发送目标或者说消息消费者的消息来源。对于消息生产者来说,它的Destination是某个队列(Queue)或某个主题(Topic);对于消费消费者来说,它的Destination也是某个队列或主题。

  3. Connection
    Connection表示在客户端和JMS系统之间建立的链接(对TCP/IP socket的包装)。Connection可以产生一个或多个session。跟ConnectionFactory一样,Connection也有两种类型:QueueConnection和TopicConnection。

  4. Session
    Session是我们操作消息的接口。可以通过session创建生产者、消费者、消息等。Session提供了事务的功能。当我们需要使用session发送/接受多个消息时,可以将这些发送/接受动作放到一个事务中。同样,也分QueueSession和TopicSession。

  5. 消息的生产者
    消息生产者由Session创建,并用于将消息发送到Destination。同样,消息生产者分两种类型:QueueSender和TopicPublisher。可以调用消息生产者的方法(send和publish)发送消息。

  6. 消息消费者
    消息消费者有Session创建。用于接收被发送到Destination的消息。两种类型:QueueReceiver和TopicSubscriber。可分别通过session的createReceiver(Queue)和createSubscriber(Topic)来创建。当然,也可以session的createDurableSubscriber方法来创建持久化的订阅者。

  7. MessageListener
    消息监听器。如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessage方法。

企业消息系统的好处

应用程序A将Message发送到服务器上,然后应用程序B从服务器中接受A发来的消息,通过下图来分析一下JMS的好处:
这里写图片描述

  • 提供消息灵活性
  • 松散耦合
  • 异步性

深入了解

http://blog.csdn.net/shaobingj126/article/details/50585035

由于博主写的很好,就不再进行复制粘贴了…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值