jms中定义了三者:消息的发送者、消息的接收者、JMS服务器在一些例子程序中,只有两方,客户端,即发送消息的人,还有就是实现了MessageListener 的程序,这个都是放在服务器
上,那么这里的消息接收者,JMS服务器 是不是就是同一个呢还有,什么时候使用jms呢?比如我写的的一个基于EJB的应用A,如果系统A有多台服务器,那么发送消息不就是给自己发送吗?还要用到jms? jms是不是用于系统A给一个远端的系统B发送消息的?

解决方案 »

  1.   

    http://www.jdon.com/idea/jaas/06005.htm
      

  2.   

    发送消息 这个说法很容易让人误解的。可以理解成是发送命令。
    经典的例子:
    你在注册CSDN论坛的时候,需要你的邮箱验证,发送邮件可能不是同步操作的(也就是说你不需要等待Web服务器邮件发送完成了才能进行下面的操作)
    Web服务器发送一条消息(命令)给JMS服务器,消息的接收者(专门发送邮件的应用程序)从JMS服务器中接收消息,然后发邮件到你的邮箱。
      

  3.   

    也就是说, 发送消息(命令),JMS服务器,和接收者可以是同一个机器或者同一个系统?
      

  4.   

    3楼说的很正确。
    JMS当然可以用在一台机器或者同一个系统,作为异步应用之间的通讯用。
    比如A、B两个应用都在一台服务器上。A应用去调用B应用,如果B应用处理极慢,不采用异步手段,那么A一直等待B的响应,A也就卡死了。如果之间采用JMS通讯传输指令,那A只管把命令丢到JMS队列,A立刻可以处理新的事务了。
    B收到JMS的消息去执行,啥时候做完了再把反馈信息通过JMS丢回给A就行了。A也就知道原先给B的事务已经做完了。这就达成了应用的异步调用。
      

  5.   

    能否举个例子,比如某个系统A,什么时候使用JMS比较好呢?
      

  6.   

    用JMS的系统,对实时性的要求一般都不是很高
      

  7.   

    JMS 用的最多的应该是系统集成或者 SOA 里面, 不同的系统之间要相互通信, 传送数据. 数据的内容通常是定义好的不同系统都可以读懂的, 如一种 xml 文档 
      

  8.   

    Java 深度探索者 
    SSH、Ant、IBatis、jsf、seam、portal、设计模式、 
    ZK、DWR、ajax、CSS 、oracle 
    群号:65670864 欢迎加入