【发布时间】:2012-01-11 23:33:37
【问题描述】:
我正在 Glassfish 3.1 上编写一个入站资源适配器(连接器模块),我注意到在 Java EE SDK 示例中,MDB 用于将消息从 EIS 传递到 Glassfish 应用程序。如果目标对象是 EJB,是否需要使用 MDB?为目标 EJB 执行 JNDI 查找并直接交付给它,完全避开 MDB 是否明智?
谢谢!
【问题讨论】:
标签: jakarta-ee ejb message-driven-bean
我正在 Glassfish 3.1 上编写一个入站资源适配器(连接器模块),我注意到在 Java EE SDK 示例中,MDB 用于将消息从 EIS 传递到 Glassfish 应用程序。如果目标对象是 EJB,是否需要使用 MDB?为目标 EJB 执行 JNDI 查找并直接交付给它,完全避开 MDB 是否明智?
谢谢!
【问题讨论】:
标签: jakarta-ee ejb message-driven-bean
在后一种情况下,您执行同步操作,而第一种方法是异步操作。在应用程序到应用程序 (A2A) 集成场景中,实现异步接口几乎总是一个不错的决定。关于这个已经写了很多了,让我参考Java documentation itself,例如第 6.3.3 节:
在设计你的应用程序时,你需要决定是否使用 与其目标 EIS 同步或异步集成,以及 现有的应用程序。同步和异步集成 方法对于应用程序集成是有效的,并且选择 应该基于集成需求和用例。根据 您对以下准则的决定。
- 需要服务质量--使用队列或发布-订阅系统可提供更高质量的服务,例如 消息路由和可靠的消息传递,比同步 通讯。
- 应用程序吞吐量--异步消息传递可以带来更好的吞吐量,因为队列缓冲消息,支持消息路由, 并保证消息传递。
- 事务集成--同步通信模型更适合应用程序需要执行安全和 为客户端同步访问一个或多个 EIS 的事务性访问 请求处理。在这种情况下,应用程序可以负担得起 与 EIS 更紧密耦合的开销以确保更高的质量 请求处理和错误处理。
- 编程模型复杂性--异步通信编程模型比更常见的同步更复杂 请求-响应模型。虽然异步模型提供了更多 服务,成本是更大的应用程序复杂性和更多的工作 开发者的一部分。
总而言之,也许没有必要,但实施 MDB 可能是明智之举。
【讨论】: