`
jiagou
  • 浏览: 2517000 次
文章分类
社区版块
存档分类
最新评论

EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P

 
阅读更多
JMS:
1.jms是java的消息服务,jms的客户端之间可以通过jms服务进行异步的消息传输,jms支


持两种消息模型,Point--to--Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发


布订阅模型;
2.多个客户端:多个客户端通信的时候是通过服务器来传输的;消息的发送和接收不是同时进


行的,也就是进行异步的传输,也就是说客户端可以一直发送请求,而不用等待服务器响


应后 再发送请求,这在比如说一卡通刷卡的时候是很有用的,可以实现不用等待而直接刷


卡消费, 用jms可以提高性能的,jms支持两种消息模型:p2p,和Publish/Subscnibe,
---------------------------------------------------------------------------------


-
P2P:
1.在P2P模型中,有下列概念:消息队列(queue),发送者(sender),接受者(receiver),每个消


息 都被发送到一个特定的队列,接受者从队列中获取消息,队列保留着信息,直到他们被


消费或 超时.
a.每个消息只有一个消费者(consumer),即一旦被消费,消息就不再在消息队列中了
b.发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收


者 有没有正在运行,他不会影响到消息被发送到队列
c.消息的消费就是消息的接收;
2.举个例子:p2p在聊天的时候相当于两个人的点对点的聊天
--------------------------------------------------------------------------


Pub/Sub:相当于一个聊天室
1.Pub/Sub:发布订阅模型
在Pub/Sub模型中,有下列概念,主题(Topic),发布者(publisher),订阅者(subscriber).
客户端将消息发送到主题,多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅



a.每个消息可以有多个消费者
b.发布者和订阅者之间有时间上的依赖性,针对某个主题(Topic)的订阅者,它必须创建一个


订 阅之后,才能消费发布者的消息,而且,为了消费信息,订阅者必须保持运行,否者接收


不到信 息.相当于不在线
c.当然,为了缓和这种严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅,这样,即


使 订阅者没有被激活(运行),它也能接收到发布者的消息.
如果你希望发送的消息可以不被做任何处理,或者被一个消息者处理,或者可以被多个消费


者 处理的话,那么可以采用Pub/Sub模型;
----------------------------------------------------------
p2p: 接收消息
发送者--->消息队列(Queue)------------> 接收者
发送消息
<--------------
----------------------------------------------------------------
Pub/Sub: 订阅消息
--------------->
发布消息 Client2
<----------------
发布者(client1)----->Topic
发布消息
<-------------- Client3
订阅消息
------------->
-----------------------------------------------------------------------------
3.p2p中的发送者和pub/sub中的发布者统称为消息的生产者;生产消息
pub/sub中的接收消息和p2p中的订阅消息:统称为消费消息
p2p中的queue和pub/sub中的topic统称为destination(目的地)
-----------------------------------------------------------------------
消息的消费:
1.在JMS中,消息的产生和消费是异步的,对于消费来说,JMS的消费者可以通过两种


方式来消费消息
a.同步--订阅者或接收者调用receive方法来接收消息,receive方法能够接收到
消息之前(或超时之前)将一直阻塞
b.异步--订阅者或接收者可以注册为一个消息监听器,当消息到达之后,系统自动


调用监听器的onMessage方法
-------------------------------------------------------------------------------
JMS编程模型:
1.connection factory创建Connection对象的工厂,针对两种不同的JMS消息模型,分别有
QueueConnectionFactory和TopicConnectionFactory两种,可以通过JNDI来查找


ConnectionFactory对象
2.ConnectionFactory就是支持JMS的应用服务器,datasource就是一个


connectionFactory;
----------------------------------------------------------
Connection
1.Connection表示在客户端和JMS系统之间建立的链接(对TCP/IP socket的包装),Connection


可以产生一个或多个Session跟ConnectionFactory一样,Connection也有两种类


型:QueueConnection和TopicConnection
2.这里的Connection就是通过ConnectionFactory得到的;
------------------------------------------------------------------
Session
1.session是我们操作消息的接口,可以通过session创建生产者,消费者,消息,等Session提供


了事物的功能,当我们需要使用session发送接收多个消息时,可以讲这些发送接收动作放


到一个事物中,同样,也分QueueSession和TopicSession
2.通过Connection可以创建session
--------------------------------------------------------------------
Destination
1.Destination的意思是消费生产者的消息发送目标或者说消息消费者的消息来源,对于消息


生产者来说,它的Destination是某个队列(Queue)或某个主题(Topic);对于消息消费者来说


它的Destination也是某个队列或主题(即消息来源),所以Destination实际上就是两种类型


的对象,Queue,Topic可以通过JNDI来查找Destination;


--------------------------------------------------------------------------
消息生产者:
1.消息生产者由Session创建,并用于将消息发送到Destination,同样,消息生产者两种类型,
,QueueSender和TopicPublisher,可以调用消息生产者的方法(sender或publish)发送消息
-----------------------------------------------------------------------------
消息消费者:
1.消息消费者由Session创建,用于接收被发送到Destination的消息,两种类


型:QueueReceiver和TopicSubscriber,可以分别通过Session的createReceiver(Queue)或


createSubscriber(Topic)来创建,当然,也可以分别通过session的


createDurableSubscriber方法来创建持久化订阅者;
--------------------------------------------------------------
MessageListener
消息监听器,如果注册了消息监听器,一旦消息到达,将自动调用监听器的onMessage方法,EJB


中的MDB(Message Drivern Bean)就是一种MessageListener
-------------------------------------------------------------------------------
1.在JMS系统中客户端之间没有接口上的依赖;实际上他们有数据依赖;比如客户端发送消息只


管发送,其他都不用管,至于谁将收到消息,是由服务器来决定的;
-----------------------------------------------------------------
MDB介绍:消息驱动bean
1.对客户端来说,message driver bean 就是异步消息的消费者,当消息到达之后,由容器负


责调用MDB,客户端发送消息到destination,MDB作为一个MessagerListener接收消息;
2.
分享到:
评论

相关推荐

    EJB3.0入门经典-weblogi

    EJB3.0入门经典-weblogic EJB3.0入门经典-weblogic EJB3.0入门经典-weblogic

    EJB3.0入门经典(PDF)

    《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...

    EJB 3.0 实例教程-随书源码

    EJB 3.0 实例教程-随书源码,所有源码都在里面。简单易懂,深入浅出,欢迎下载

    ejb3.0中文版--

    ejb3.0中文版 ejb3.0中文版 ejb3.0中文版

    EJB3.0实例教程-企业应用开发核心技术和Manning - EJB3 in Action

    EJB3.0实例教程-企业应用开发核心技术(作者黎活明)和Manning - EJB3 in Action(英文版)

    EJB3.0 实例教程 -- 切片1

    虽然EJB3.0最终规范出来了一段时间,但对EJB3.0的应用还停留在介 绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现EJB3.0 的开发过程,希望对大家有所帮 助。 EJB3 最激动人心的是POJO 编程模型,我...

    传智播客EJB3.0_EJB3.0企业开发_Jboss_ppt_pptx_黎活明.rar

    2、传智播客EJB3.0.ppt--&gt;是以《传智播客EJB3.0.pptx》为源文件的简单复制与粘贴后的结果,其格式与源文件有些不同,更为简洁,但没有源文件美观。该文件office 97 - office 2003及以上版本都能打开。 下载资源后...

    EJB3.0 实例教程 -- 切片2

    EJB3.0 实例教程 第一章 前言......4 1.1 本教程适合人群4 1.2 联系作者..4 第二章运行环境配置4 2.1 下载与安装........4 2.2 运行一个EJB3例子.......9 2.3 在独立的TOMCAT 中调用EJB....9 2.4 发布在JBOSS集成...

    agent-ejb-3.0-beta-1-sources.jar

    标签:agent-ejb-3.0-beta-1-sources.jar,agent,ejb,3.0,beta,1,sources,jar包下载,依赖包

    agent-ejb-3.0-beta-1-javadoc.jar

    标签:agent-ejb-3.0-beta-1-javadoc.jar,agent,ejb,3.0,beta,1,javadoc,jar包下载,依赖包

    agent-car-ejb-3.0-beta-1-sources.jar

    标签:agent-car-ejb-3.0-beta-1-sources.jar,agent,car,ejb,3.0,beta,1,sources,jar包下载,依赖包

    agent-ejb-3.0-beta-1.jar

    标签:agent-ejb-3.0-beta-1.jar,agent,ejb,3.0,beta,1,jar包下载,依赖包

    EJB3.0规范-EJB3.0 SPECIFICATION

    EJB3.0规范 EJB3.0 SPECIFICATION 官方规范英文版

    Ejb3.0--4

    NULL 博文链接:https://xiaocong1001.iteye.com/blog/258852

    EJB3.0 学习笔记

    记录自己学习EJB3.0中学到的各个章节的一些东西.

    精通EJB3.0 中文版 3/3

    《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和过程,向开发者展示了如何使用会话Bean、将会话Bean发布为Web服务、消息驱动Bean;第...

    精通EJB3.0 中文版 1/3

    罗时飞精通EJB3.0.zip.001 罗时飞精通EJB3.0.zip.002 罗时飞精通EJB3.0.zip.003 《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和...

    ejb3.0入门图文教程

    ejb3.0入门图文教程,包括EJB3.0开发Entity.pdf、EJB3.0开发Message Driven Bean.pdf、EJB3.0开发Session Bean.pdf

    EJB3.0中文文档

    EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.

Global site tag (gtag.js) - Google Analytics