【问题标题】: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
    相关资源
    最近更新 更多