Jakarta ee JavaEE连接器交付到EJB而不是MDB

Jakarta ee JavaEE连接器交付到EJB而不是MDB,jakarta-ee,ejb,message-driven-bean,Jakarta Ee,Ejb,Message Driven Bean,我正在Glassfish 3.1上编写一个入站资源适配器(连接器模块),我在Java EE SDK示例中注意到,MDB用于将消息从EIS传递到Glassfish应用程序。如果目标对象是EJB,是否有必要使用MDB?对目标EJB执行JNDI查找并直接交付给它是否明智,完全避免MDB 谢谢 在后一种情况下,执行同步操作,而第一种方法是异步操作。在应用程序到应用程序(A2A)集成场景中,实现异步接口几乎总是一个好的决策。关于这一点,已经写了很多,让我只参考第6.3.3节: 在设计应用程序时,您需要决定

我正在Glassfish 3.1上编写一个入站资源适配器(连接器模块),我在Java EE SDK示例中注意到,MDB用于将消息从EIS传递到Glassfish应用程序。如果目标对象是EJB,是否有必要使用MDB?对目标EJB执行JNDI查找并直接交付给它是否明智,完全避免MDB


谢谢

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

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

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

总之,可能没有必要,但实现MDB可能是明智的。

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

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

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

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

谢谢您的回答。没错,但是EJB也支持异步方法。如果需要异步处理,可以使用它们。@Dario:是的,但两者之间没有消息传递引擎。这是关于异步调用,而不是消息传递。在基于MDB的方案中,您可以定义处理队列的最大并行MDB数。您有另一个间接级别(并且可能以持久的方式实现队列)。谢谢您的回答。没错,但是EJB也支持异步方法。如果需要异步处理,可以使用它们。@Dario:是的,但两者之间没有消息传递引擎。这是关于异步调用,而不是消息传递。在基于MDB的方案中,您可以定义处理队列的最大并行MDB数。您有另一个间接级别(并且可能以持久方式实现队列)。