【进阶EJB】深入探讨三种Bean(三)——MessageDriven Bean

通过前两篇文文章

【进阶EJB】深入探讨三种Bean(一)——Session Bean

【进阶EJB】深入探讨三种Bean(二)——Entity Bean

已经介绍了前两种Bean,今天我们继续介绍第三种Bean——MessageDriven Bean。

要说MessageDriven Bean前就先要介绍一下JMS(Java Message Service),JMS是Java消息服务,它是一个与具体平台无关的API(Application Program Interface 应用程序接口),是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java应用程序进行消息交换、并且通过提供标准的产生、发送、接受消息的接口简化企业应用的开发。而MessageDriven
Bean就是基于JMS消息,只能接受客户端发送的JMS消息然后处理。知道了这些我们继续了解MessageDriven Bean。

MessageDriven Bean即消息驱动Bean,它是设计用来专门处理基于消息请求的组件。消息驱动Bean具有处理大量并发消息的能力,并且如果一个消息执行很长时间而执行结果无需向用户实时反馈时,也非常适合使用消息驱动Bean,它能够避免客户端长时间等待一个方法调用直到返回结果。比如订单成功后向用户发送一封电子邮件或短信等。

JMS有两种工作模型:P2P点对点模型和Pub/Sub发布订阅模型。

P2P(Point-to-Point)点对点模型,什么是P2P模型?P2P模型中有发送者、接收者和消息队列。每个消息只有一个消费者,即消息一旦被消费,消息就不会再在消息队列中;消息的发送者和接收者不存在时间上的依赖性,也就是说当发送者发送了消息之后,不论接收者有没有正在运行,都不影响消息被发送到队列中;接收者在成功接收了消息之后,需要给队列应答成功;每个消息都被发送到一个特定的消息队列中,接收者从消息队列中获取消息,消息队列保留着消息,直到它们被消费或超时。

什么时候适合用P2P?就是如果你希望发送的每一个消息都能够被成功处理的话,那么就需要应用P2P模型了。

Pub/Sub(Publish/Subscribe)发布/订阅模型,什么是Pub/Sub发布/订阅模型?Pub/Sub模型中有主题、发布者、订阅者。客户端发送消息到主题,多个发布者将消息发送到主题,系统将这些消息传递给多个订阅者。其中每个消息可以有多个消费者;发布者和订阅者之间有时间上的依赖性,针对某个主题的订阅者,他们必须建立一个订阅之后才能消费发布者的消息,并且为了消费消息,订阅者必须保持运行的状态。

什么时候适合用Pub/Sub?如果你希望发送的消息可以不被做任何处理,或者被一个消费者处理,或者可以被多个消费者处理的话,可以采用Pub/Sub模型。

今天这篇文章就介绍到这里,通过前几篇关于EJB的文章,我们对EJB有了一个大致的认识,在接下来的ITOO项目中我们会使用EJB,所以期待在实践中对EJB有一个更为全面的认识。有关EJB的文章先暂时介绍到这里,在项目中对EJB有新的认识我会及时更新在博客中。接下来我会写一些关于SprigMVC的文章,敬请期待吧!

时间: 2024-10-17 07:31:06

【进阶EJB】深入探讨三种Bean(三)——MessageDriven Bean的相关文章

第十三节: EF的三种模式(三) 之 来自数据库的CodeFirst模式

一. 简介 [来自数据库的Code First模式]实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模式出现在VS2015版本以后.   该模式也是适用于数据库已经设计建好的情况. 生成的上下文和类库如下: 二. 使用介绍 使用方法除了,选择模式的不一致,其他的使用步骤同DBFirst完全相同. 选择对应的模式

【进阶EJB】深入探讨三种Bean(一)——Session Bean

接着,我们继续EJB的学习.经过前两篇博客的介绍,我想大家已经对EJB有了一个初步的认识.但是大家想过没有,我们为什么要用EJB呢? why EJB? 其中一个很重要的原因就是分布式!所谓分布式,就是分布式对象之间相互协作,完成特定的业务功能.通俗一点来说,就是我们不是把事情交给一个人去做,而是把事情划分一下,交给多个人去处理,最后把多个人处理的结果综合在一起得到最终的结果.与此同时,分布式对象之间能够实现分布透明性,亦或是位置透明性,即在客户端代码中无需指定分布式对象的位置:而且分布式对象之间

Spring三 Bean的三种创建方式

创建Bean的三种方式在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法.实际上,Spring支持使用以下三种方式来创建Bean:(1)调用构造器创建Bean(2)调用静态工厂方法创建Bean(3)调用实例工厂方法创建Bean一 构造器创建Bean实例如果不采用构造注入,Spring底层会调用Bean类的无参数构造器来创建实例,因此该类必须要提供无参数的构造器,并且class属性的值就是该B

Spring实现初始化和销毁bean之前进行的操作,三种方式

关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二种是:通过 在xml中定义init-method 和  destory-method方法 第三种是:通过bean实现InitializingBean和 DisposableBean接口 下面演示通过  @PostConstruct 和 @PreDestory 1:定义相关的实现类: [java] v

Spring提供的三种装配Bean方式

在Spring中,对象不需要自己查找或创建与其所关联的其他对象,Spring容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质. Spring提供了三种主要的装配Bean的方式: 隐式的bean发现和自动化装配 在Java中进行显示配置 在XML中进行显示配置 隐式的bean发现和自动化装配 Spring从两个方面来实现自动化装配: 组件扫描:Spring会自动发现应用上下文中所创建的bean. 自动装配:Spr

hibernate的三种状态(儿)

第五讲:hibernate的三种状态 瞬时:bean对象与session,与数据库无关.在session对象的save方法保存之前. 持久状态(托管):bean对象与session有关,数据库中有对应的记录.在save的保存方法之后,在session对象的关变之前.Session知道对象的变化,此时对象的变化即使在session保存对象之后session也可以把数据的变化保存在数据库中.(s.save--àstr.commit-----s.close) 在这个过程中对象变化的话即为更新updda

【进阶EJB】问你EJB知多少?

EJB是Enterprice Java Beans的简称,即企业Java组件,是一个用于分布式业务应用标准服务端组件模型(这里强调是服务端组件模型,后面我们将会说一下为什么是服务端而不是客户端),是一组用java语言编写的包含字段和方法的代码体,而这些代码的核心任务就是实现纯粹的业务逻辑. 采用Enterprice Java Beans架构编写的应用是可伸的.事务性的.多用户安全的,可以一次编写这些应用,然后部署在任何支持Enterprice Java Beans规范的服务器平台,如JBoss.

【进阶EJB】深入探讨三种Bean(二)——Entity Bean

通过上一篇文章,我们介绍了[进阶EJB]深入探讨三种Bean(一)--Session Bean,这篇文章继续介绍EJB的三种Bean,今天我们重点介绍一下Entity Bean. Entity Bean,通过名字我们就知道是实体Bean是存放数据的.Entity Bean是持久化的数据组件,代表持久存储的商业实体对象.通常情况下,每个Entity Bean对应于关系数据库中的单张表,Entity Bean的单个实例对应于表中的某一条数据.上篇文章中说的Session Bean可作为Entity

Java之旅EJB(2)——三种bean之会话bean

前面我们大致讲过ejb是什么,这里不再对定义进行讲解,主要是讲解内部的组成. 1.      Bean分类 会话bean(session bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过jdbc直接操作数据库,但大多数情况下都是通过实体bean来完成对数据库的操作. 实体bean(Entity bean) 它实际上属于java持久化规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在hibernate.toplink等框