5

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

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

谢谢

4

4 回答 4

0

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

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

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

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

于 2012-07-11T10:25:51.757 回答
0

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

无需直接使用 .NET 处理 Camel,因为无论如何都应该通过 ActiveMQ 进行通信。ActiveMQ/Camel 组合对于这类任务来说非常强大——而且它是免费的。

于 2012-07-11T13:29:53.707 回答
0

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

于 2010-07-17T14:36:23.157 回答
0

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

于 2010-07-14T00:46:26.493 回答