【问题标题】:Java EE connector delivering to EJB instead of MDBJava EE 连接器交付给 EJB 而不是 MDB
【发布时间】: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


    【解决方案1】:

    在后一种情况下,您执行同步操作,而第一种方法是异步操作。在应用程序到应用程序 (A2A) 集成场景中,实现异步接口几乎总是一个不错的决定。关于这个已经写了很多了,让我参考Java documentation itself,例如第 6.3.3 节:

    在设计你的应用程序时,你需要决定是否使用 与其目标 EIS 同步或异步集成,以及 现有的应用程序。同步和异步集成 方法对于应用程序集成是有效的,并且选择 应该基于集成需求和用例。根据 您对以下准则的决定。

    • 需要服务质量--使用队列或发布-订阅系统可提供更高质量的服务,例如 消息路由和可靠的消息传递,比同步 通讯。
    • 应用程序吞吐量--异步消息传递可以带来更好的吞吐量,因为队列缓冲消息,支持消息路由, 并保证消息传递。
    • 事务集成--同步通信模型更适合应用程序需要执行安全和 为客户端同步访问一个或多个 EIS 的事务性访问 请求处理。在这种情况下,应用程序可以负担得起 与 EIS 更紧密耦合的开销以确保更高的质量 请求处理和错误处理。
    • 编程模型复杂性--异步通信编程模型比更常见的同步更复杂 请求-响应模型。虽然异步模型提供了更多 服务,成本是更大的应用程序复杂性和更多的工作 开发者的一部分。

    总而言之,也许没有必要,但实施 MDB 可能是明智之举。

    【讨论】:

    • 感谢您的回答。没错,但 EJB 也支持异步方法。如果需要异步处理,可以使用它们。
    • @Dario:是的,但中间没有消息传递引擎。这是关于异步调用,而不是消息传递。在基于 MDB 的场景中,您可以定义处理队列的最大并行 MDB 数量。您有另一个级别的间接性(并且可能您可以以持久的方式实现队列)。
    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 2019-07-08
    • 2013-04-12
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多