【问题标题】:Apache Camel ESB for C# and Java EDA用于 C# 和 Java EDA 的 Apache Camel ESB
【发布时间】:2011-02-23 04:46:09
【问题描述】:

我们正在考虑使用事件驱动架构 (EDA) 集成我们的一些粗粒度业务服务,并且这些服务的服务器端 (REST) 在 Java 和 .NET (C#) 中实现。我们最初认为使用 RabbitMQ(和 AMQP 协议)作为一种中立和开放的方式(在这两种语言中具有良好的客户端支持),但这意味着必须支持 Java 和 CLR 旁边的另一个运行时(Erlang)。我们还在研究 Apache qPid,因为它具有 AMQP 协议的 Java 代理实现,可能会消除这种担忧。

有没有人尝试在 ActiveMQ 之上使用更丰富的 Apache Camel ESB 以 Pub-Sub EDA 方式集成 Java 和 .NET 服务?有 我错过了有关通过此路线的任何其他可能的建议?

谢谢

【问题讨论】:

    标签: c# esb amqp apache-camel eda


    【解决方案1】:

    应该很好用! ActiveMQ 是一个 java 应用程序,但有一个很好的工作 .NET 客户端 API。它应该可以满足您的大部分发布/订阅需求。如果你需要更多的中间逻辑,比如路由,实际上 ActiveMQ 是与 Camel 捆绑在一起的,这样你就可以在 ActiveMQ 实例上执行路由、转换、转换等,通过配置一些 XML(或通过 Java/Scala 代码)。

    没有必要直接用 .NET 处理 Camel,因为无论如何都应该通过 ActiveMQ 进行通信。 ActiveMQ/Camel 组合对于此类任务非常强大 - 而且它是免费的。

    【讨论】:

      【解决方案2】:

      如果您正在寻找的只是一个支持 EDA 的消息传递平台,那么 Camel 并不是绝对必要的。 Camel 是一个框架,用于在不同的有效负载格式之间进行转换,在 Web 服务、消息传递、RSS 提要和关于160 others 之间进行路由。

      根据您上面的问题,ActiveMQ 应该能够处理您描述的开箱即用的用例。

      从客户端的角度来看,ActiveMQ 库支持 Java(JMS - the 标准)和 C++/C#(CMS/NMS - JMS 的几乎完全相同的副本)。通过 (pretty much also standard) STOMP 协议支持其他语言(Ruby、Python、Javascript 等)。

      我曾在混合的 .Net/Java 环境中使用 ActiveMQ,它完全按照它在锡上所说的那样工作。所有这些都在一个不错的 Java 运行时中,可以通过 JMX 使用您最喜欢的监控工具进行检测。

      【讨论】:

        【解决方案3】:

        我为我的 .net 应用程序创建了一个 java 端点适配器。 .net 应用程序将 xml 或 json 消息发布到骆驼端点,在我的例子中是 TibcoEMS 主题。所有的路由/过滤/丰富/...都在骆驼内部处理。然后将交换放置在另一个端点上,以便由 java 应用程序检索。

        【讨论】:

          【解决方案4】:

          Camel 真正出色的 ESB 用例之一是“路由”。据我所知,骆驼路由引擎没有.NET 端口。因此,您将无法在 .NET 端使用 Camel 的路由功能。 但是,camel 支持各种交换格式,如 json、xml 和 pojos。您应该能够使用 xml 或 json 作为交换格式来实现 Java 和 .NET 之间的互操作性。

          【讨论】:

            猜你喜欢
            • 2012-11-14
            • 1970-01-01
            • 2017-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-02
            相关资源
            最近更新 更多