【问题标题】:When to use an ESB? messaging with Email/XMPP/SMS何时使用 ESB?使用电子邮件/XMPP/SMS 发送消息
【发布时间】:2010-12-31 21:20:27
【问题描述】:

我通过支持多种通知方法为应用程序增加了一些深度。目前,如果网站上出现异常或网站上发生事件,则会向这些用户发送一封电子邮件,但我希望它更通用。我希望用户能够优先考虑他们的通知方法。如果他们想在在线时收到 XMPP 消息,那么他们会以这种方式收到通知。如果他们不在线,那么他们会收到一封电子邮件,依此类推。

似乎我想在这里使用 ESB,但我看到的每个 ESB 看起来都是重量级的。目前,我没有任何发送/移动文件的意图,也没有集群/故障转移的需要。

我已经玩过 Smack 了,它很适合我想要的东西。它只是一个 XMPP 客户端库。我想在阅读了这些回复之后,我必须确定我从 Apache Camel 或 Active MQ 等获得多少收益。我想要的主要组件是路由引擎。我可以轻松编写自己的一个,对不同的方法进行优先级排序/排序,但我想知道现在硬着头皮而不是以后不得不放弃我的自定义路由引擎是否更有利。

【问题讨论】:

    标签: java architecture jakarta-ee esb


    【解决方案1】:

    ESB 非常重量级。除非有来自埃森哲的人在你耳边窃窃私语,否则我强烈建议您选择更易于管理的方式。

    EventBus 之类的东西似乎更符合您的要求,或者,如果您使用的是 Spring,它有一个内置的同步/异步事件分派器机制,可以在单个 JVM 上很好地完成这项工作。

    【讨论】:

    • 我正在使用 JBoss Seam,它还有一个很好的观察者/生产者事件系统,可以很好地配置为使用多个 JVM 的 JMS。我只是想知道在该事件引发之后,它应该去哪里,使用 ESB 来确定如何通知接收者,或者我自己的实现?
    【解决方案2】:

    ESB 很重。其中一个集成项目应该可以解决问题。我想到了 Apache Camel 和 Spring 集成。 Apache Camel 已经内置了对电子邮件和 XMPP 的支持。 Spring Integration 内置了电子邮件,但您目前需要构建自己的 XMPP 适配器,但它似乎正在开发中,请参阅Spring Integration 2.0

    您需要在其中任何一个中构建一些路由逻辑,以便当您向用户发送消息时,它可以判断用户是否在线并正确路由。

    编辑:从技术上讲,Apache Camel 和 Spring Integration 都可以被视为 ESB,但它们绝对属于轻量级,因为它们都没有强制执行容器机制。更多关于whether Camel is an ESB的信息。

    【讨论】:

    • 我遇到了 Apache Camel,发现它支持 XMPP/电子邮件,所以这是一个优点。好的,是的,我想我主要关心路由,我的印象是 ESB 有自己的 XML 语法来定义消息如何被路由/转换。那是我主要想要的部分。我还想选择它支持的模块以减小大小。
    • Camel 和 Spring Integration 都可以让您将规则编写为常规代码。他们两个也将他们的模块拆分成单独的 jar 文件,例如:repo2.maven.org/maven2/org/apache/camel,所以你应该只能包含你需要的 jar。
    • 我想补充一点:Camel 和 Spring Integration 都可以让您根据自己的喜好将规则编写为常规代码或 XML。
    【解决方案3】:

    我推荐 Apache Camel - 它非常易于使用,并带有 XMPPmail 支持 - 以及许多其他 components

    如果稍后您想单独管理骆驼 - 您可以将其部署在 OSGI container too 中。

    【讨论】:

      【解决方案4】:

      我认为现在就像我过去在其他项目中所做的那样,我将暂时推出自己的消息路由器。它的重量会更轻,而且我会对这些东西的工作原理有更多的欣赏/理解。

      我正在使用的基础架构可以使用 JMS 后端,但目前正在为单个 JVM 使用观察者/发布者模型。我正在使用 Quartz 作业来处理所有请求,因此服务器不会被太多请求所淹没。当我扩展到更多服务器时,如果需要,我可以使用 JMS 队列,而无需更改我的代码库。

      沃尔特

      【讨论】:

        猜你喜欢
        • 2010-11-13
        • 2013-11-30
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多