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

来源:互联网 发布:天气预报js代码 编辑:程序博客网 时间:2024/04/30 11:48
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.
   
原创粉丝点击