J2EE探索者: 用JMS进行企业消息传递 - 编程入门网
在线状态以等待来 自提供者的消息。会话bean是同步的,因而不能支持“一直在线(always-on)”侦听器组 件。与前一种客户机不同,同步的Java客户机必须调用一个会话bean方法。然后由该会话 bean方法打开与一个消息传递提供者的连接,以便发送和接收消息。
消息驱动bean EJB 2.0 规范定义了一种新的企业bean,以期弥补其他四种类型的企业bean(两种会话 bean和两种实体bean)的不足。这种新的bean就是消息驱动bean(message-driven bean, MDB),人们期望用它来提供可重用的消息传递组件,以便利用已有的在J2EE应用服务器方 面的投资,尤其是利用已有的EJB技术。 MDB 只能通过一条JMS消息异步地进行调用。因此,它并不具有其他bean所具有的本地 和远程接口。相反,MDB实现两种特殊的接口:一个与EJB容器之间的接口 (javax.ejb.MessageDrivenBean),以及一个消息传递接口 (javax.jms.MessageListener)。作为一种成熟的JMS客户机,MDB通过一个MOM服务器既 可以发送消息,又可以接收消息。作为一种企业bean,MDB由容器来管理,并且通过一个 EJB部署描述符进行宣告式的配置。 J2EE探索者: 用JMS进行企业消息传递(4)时间:2011-04-11 IBM Kyle GabhartMDB 的优点和缺点 MDB允许开发者利用已有的在EJB技术方面的投资,但是仍然可以将这些投资整合到一个 异步消息传递的上下文环境中。例如,JMS客户机可以发送一条消息给一个MDB(该MDB一直 在线等待传进来的消息),而后者可以访问一个会话bean或者一些实体bean。通过这种方 式,MDB可以被用作一种异步包装器,提供对业务流程的访问途径,而之前这些业务流程只 能通过一个同步的RMI/IIOP调用来访问。 消息驱动bean本身也是一种强大的消息传递解决方案。由于MDB被专门设计用来作为消 息的消费者,并且仍然是由EJB容器管理的,因此它们在可伸缩性方面提供了巨大的优势。 由于消息bean是无状态的,并且由容器进行管理,因此它们并发地发送和接收消息(容器 只是简单地将另一个bean从池中提出)。这一点,加上EJB应用服务器所固有的可伸缩性, 构成了一种极其健壮的、可伸缩的企业消息传递解决方案。 另一方面,MDB相对来说还是一种很新鲜的事物,没有经过很多的检验。因而,并不是 所有的J2EE供应商都支持它们,即使是支持MDB的那些供应商也只是最近才实现它们的。可 以预见,MDB的不成熟意味着供应商实现在稳定性和可靠性方面还有一段很长的路要走。而 且,MDB社区也需要经历更多的锤炼,以获得一套成形的使用MDB的最佳实践。 抛开MDB的相对不成熟性不提,理解它是为专门的目的而设计的(即作为JMS消息的消费 者)十分重要。MDB只能通过JMS消息来调用,其他方式都不管用。这意味着它们作为消息 的消费者非常理想,但未必适合作为消息的生产者。消息驱动bean当然可以发送消息,但 前提是它首先要让一条传进来的请求调用它。而且,当前设计的MDB只能映射到单个的目的 地。它们只能在那个目的地上侦听消息。这一限制在以后的版本中可以改变,但目前您只 能为每个您想侦听的目的地定义一个MDB。 消息传递解决方案指导方针 如前所述,选择适当的解决方案时,大部分要做的工作就是衡量您企业的特定需求,包 括目前的需求和可预见的将来的需求。如果能记住多种企业消息传递解决方案可以结合使 用,那么也会很有帮助。在下一节,我们将看一些常见的消息传递场景和每个场景潜在的 JMS解决方案。当您为您的企业选择适当的消息传递技术,或者混合使用多种技术时,这些 内容可以提供一般的指导方针。 从一个组件访问多个主题和队列 如果您的业务流程规定了消息目的地只能有条件地访问(换句话说,如果x<5,则访 问主题A,如果x>5,则访问主题B),那么您将不能使 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |