我们扩大MDBs学前,我们需要理解message(新闻)与JMS(Java Message Service)的概念。

我们在Java EE中谈论消息,实际上就是意味着实现一个松耦合的过程。系统组件之间的异步通信。

在开发中,很多组件之间的调用都是同步的,像简单的方法调用、Java的RMI等。

而此处的异步调用差别于此。在非常多时候,使用异步消息可以提高用户体验。

拿CSDN的注冊功能来举例:用户点击注冊之后,这时client向server发送一个请求。server进行处理后。将注冊成功的提示消息返回给客户,同一时候,向用户的邮箱发送了一封邮件。是不是等邮件发送成功、用户收到邮件之后,再向用户显示注冊成功呢?

当然不会这样,由于用户体验将会非常差。

所以将结果直接返回给用户,将用户注冊的信息通过消息发送给后端程序慢慢处理。

消息

消息是JMS的核心概念,JMSclient和JMS服务提供者通过消息来进行通信。

企业消息不是一种新的概念。和消息相关的产品已经有多年的历史,比方IBM MQSeries,Microsoft的MSMQ,JBoss MQ 和 Apache的 ActiveMQ等。

企业消息系统使用松耦合的方式集成应用程序,在存储和转发的基础上支持应用程序间数据的异步传递;各种应用程序仅仅要和消息server(消息中间件,MOM)打交道就能够实现相互通信。

使用消息系统有一下长处:

1、平台无关性;

2、和网络位置无关。

3、在不同类型的网络环境下互操作性良好。

4、具有良好的扩展性和良好的伸缩性。

JMS

JMS(Java Message Service) 即Java消息服务。它提供标准的产生、发送、接收消息的接口。简化企业应用的开发。JMS是一种企业消息传送的API,并非MOM消息中间件系统的所有,JMS也是一种规范,类似于JDBC。我们通JMS API訪问 JMS的server。

大致由三部分组成:1、消息发送端;2、中间件server;3、消息接收端三个组件。

Java消息server是指。将数据通过消息作为载体在网络中从一个系统异步传送给还有一个系统。这种异步消息传送意味着:发送者不须要等待接收者接收或处理该消息;它能够自由地发送消息并持续进行处理。这样一个异步式的架构主要依赖于一台消息server(message server)。消息server,也称为消息路由器(message router)或代理(broker)。它负责从一个消息传送client向其它消息传送client传送消息。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1NzY1MDIzMDUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

JMS支持两种消息通信模型。各自是著名的点到点(point-to-point)(P2P)模型和著名的公布/订阅(Pub/Sub)模型。

P2P与Pub/Sub的简单对照:

P2P 模型规定了一个消息仅仅能有一个接收者;

Pub/Sub 模型同意一个消息能够有多个接收者。

对于点到点模型。消息生产者产生一个消息后,把这个消息发送到一个Queue(队列)中。然后消息接收者再从这个Queue中读取,一旦这个消息被一个接收者读取之后。它就在这个Queue中消失了。所以一个消息仅仅能被一个接收者消费。

与点到点模型不同,公布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个Topic中。这个Topic能够同一时候有多个接收者在监听,当一个消息到达这个Topic之后。全部消息接收者都会收到这个消息。

关于点到点模型与公布/订阅模型详细信息,我会安排介绍下一篇文章。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Ejb in action(七)——message与JMS的更多相关文章

  1. Simple guide to Java Message Service (JMS) using ActiveMQ

    JMS let’s you send messages containing for example a String, array of bytes or a serializable Java o ...

  2. Ejb in action(六)——拦截器

    Ejb拦截器可以监听程序中的一个或全部方法.与Struts2中拦截器同名,并且他们都可以实现切面式服务.同一时候也与Spring中的AOP技术类似. 不同的是struts2的拦截器的实现原理是一层一层 ...

  3. Ejb in action(两)——示例入门

    在前面的文章中,,我们推出Ejb相关概念.在此之前展开的阐述,我给大家Ejb示例.加深印象. 开发环境:eclipse 应用server:jboss 1.服务端程序 在Eclipse中创建一个Ejb项 ...

  4. Ejb in action(一)——开篇介绍

    从今天開始.我们共同来学习JavaEE中一个很重要的规范:Ejb. 既然您已经找到了这篇文章.就说明您至少已经对分布式开发有个大体上的概念了,之前没了解过也没关系,正好通过咱们的共同学习,一起来了解它 ...

  5. Ejb in action(四)——购物车实例演示有状态会话Bean

    前面.我们介绍了一个入门实例.事实上那就是无状态回话Bean的经常使用情况. 上一篇文章中.我们介绍了无状态会话Bean和有状态会话Bean的相关概念.为了加深大家对它们的理解,我们一起来实现一个有状 ...

  6. jms版本

    Java消息服务是一个在 Java标准化组织(JCP)内开发的标准(代号JSR 914). 2001年6月25日,Java消息服务发布JMS 1.0.2b,2002年3月18日Java消息服务发布 1 ...

  7. 深入浅出JMS(一)--JMS基本概念

     from:http://blog.csdn.net/jiuqiyuliang/article/details/46701559 深入浅出JMS(一)--JMS基本概念 标签: jmsmessagin ...

  8. JMS【一】--JMS基本概念

    摘要:The Java Message Service (JMS) API is a messaging standard that allows application components bas ...

  9. JMS基本概念

    原文:http://blog.csdn.net/jiuqiyuliang/article/details/46701559 The Java Message Service (JMS) API is ...

随机推荐

  1. SharePoint使用BCS开发你第一个应用程序(三)

    SharePoint使用BCS开发你第一个应用程序(三) 创建外部内容类型.         创建外部内容类型有三种不同方式: 1. 在记事本上手写XML代码(不推荐). 2. 使用SharePoin ...

  2. CSS——(2)与标准流盒模型

    部分博客<CSS--(1)基础>中简介了CSS的概念和几种用法,如今主要是介绍其的核心内容. 盒子模型 为了理解盒子模型,我们能够先从生活中的盒子入手.盒子是用来放置物品的,内部除了有物品 ...

  3. xCAT在多卡的物理机上装rhel6当需要人工选择网卡

    问题叙述性说明 今天装了双网卡的物理机器上rhel5如果一切顺利.但是,在安装rhel6时间不能选择安装自己主动网卡,它会弹出一个窗口,让选择em1依然是em2. 问题原因 原因是我在加入节点的时候使 ...

  4. mysql数据库的安装以及常见优化设置

    原文请详见:http://www.ucai.cn/blogdetail/7036?mid=1&f=5 能够在线执行查看效果哦! 本文依据优才网课程整理,面向web开发人员,内容以有用为主,专业 ...

  5. .Net反编译实战

    原文:.Net反编译实战 当你面对一个已经部署好的网站,功能,性能都非常不给力的时候,你会怎么办? 当你尝试去了解这个网站业务逻辑,代码逻辑和数据库逻辑时却发现根本没有任何资料时你会怎么办? 当你准备 ...

  6. Linux查看网卡流量(转)

    sar 这个工具RHEL5自带有,默认也安装. 一个强大的工具(好像这些工具都蛮强的),参数很多,有时间man一下. -n参数很有用,他有6个不同的开关:DEV | EDEV | NFS | NFSD ...

  7. C++教程之lambda表达式一

    什么是Lambda? C++ 11增加了一个很重要的特性--Lambda表达式.营里(戴维营)的兄弟都对Objective-C很熟悉,很多人多block情有独钟,将各种回调函数.代理通通都用它来实现. ...

  8. POJ 1026 Cipher(更换)

                                                                   Cipher Time Limit: 1000MS   Memory Li ...

  9. 文件类似的推理 -- 超级本征值(super feature)

         基于内容的变长分块(CDC)技术,能够用来对文件进行变长分块.而后用来进行反复性检測,广泛用于去重系统中.后来又出现了对相似数据块进行delta压缩,进一步节省存储开销. 所以就须要一种高效 ...

  10. Kinect的学习笔记发展一Kinect引进和应用

    Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...