【问题标题】:Difference between MDB and JMSMDB 和 JMS 的区别
【发布时间】:2011-06-09 15:33:12
【问题描述】:

【问题讨论】:

    标签: jakarta-ee ejb jms ejb-3.1


    【解决方案1】:

    JMS 和消息驱动 bean 不是非此即彼的选择,两者是互补的。

    JMS 是用于传递消息的 API 和技术。消息驱动 bean (MDB) 是一种 API,用于以 EJB 样式接收 JMS 消息作为事件。处理 JMS 消息的方式有很多种,MDB 只是其中一种。

    来自JavaEE tutorial:

    消息驱动的 bean 可以实现任何消息类型。最常见的是,它们实现了 Java 消息服务 (JMS) 技术。

    顺便说一句,您的主题与 MBean 相关 - 这是完全不同的(指的是 JMX API),与 JMS 无关。

    【讨论】:

    • +1 - 关于 MBean 的要点;它造成了问题和文本之间的不和谐。
    • @JavaUser:不是“建立在之上”,不,这两个 API 之间没有耦合。这是 MDB 最常见的用法 - 它们通常实现 MessageListener 接口。
    • @skaffman 我看到原始问题已被编辑,所以你的最后一句话失去了意义——但这就是把我带到这里的东西;您的评论和其他帖子 (theserverside.com/news/thread.tss?thread_id=31199) 帮助回答了我的问题。谢谢!
    【解决方案2】:

    JMS 是 Java 消息服务规范;它是 Java EE 中队列和主题的 API。

    我熟悉的 MDB 通常实现 javax.jms.MessageListener 接口,将主题或队列侦听器封装到由 Java EE 容器管理的组件中。

    但是在 cmets 中向我指出这不是必需的; MDB 可用作 Java 连接器 API 的一部分。

    【讨论】:

    • ''MDB 是在 JMS API 之上构建的。'' - 抱歉,这不正确。 JMS 是 MDB 的(异步)消息传递的通用提供者,但 MDB 可以充当任何提供 JCA 资源适配器的服务的端点(侦听器)。 MDB 绝不会建立在 JMS API 的任何部分之上。
    • 我只在 JMS 中使用过它们;我不知道 JCA 连接。在我看来,“在上面”意味着“使用 MessageListener 接口”,它是一个 JMS 包。您的回答当然更完整,但“一点也不”对我来说似乎太过分了。我很想看到有人将 MDB 用于 JMS 以外的东西的生产引用。
    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多