用于C#和Java EDA的Apache Camel ESB

时间:2010-05-24 11:07:57

标签: c# esb amqp apache-camel eda

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

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

由于

4 个答案:

答案 0 :(得分:1)

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

从上面的问题来看,ActiveMQ应该能够处理开箱即用的用例。

从客户端的角度来看,ActiveMQ对Java(JMS - 标准)和C ++ / C#(CMS / NMS都提供了库支持 - 几乎完全是JMS的副本)。通过(pretty much also standardSTOMP协议支持其他语言(Ruby,Python,Javascript等)。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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