Apache Camel是用于C#和Java EDA的ESB

5
我们正在考虑使用事件驱动架构(EDA)集成一些粗粒度业务服务,这些服务的服务器端(REST)均采用Java和.NET(C#)实现。最初我们考虑使用RabbitMQ(和AMQP协议)作为中立且开放的手段(在这两种语言中具有良好的客户端支持),但这意味着需要在Java和CLR旁边支持另一个运行时(Erlang)。我们还在考虑Apache qPid,因为它具有AMQP协议的Java代理实现,这可能消除了这个问题。
有人尝试过将更丰富的Apache Camel ESB与ActiveMQ结合使用,以Pub-Sub EDA方式集成Java和.NET服务吗?我是否错过了其他可能的建议?
谢谢
4个回答

0

如果你只是在寻找一个消息平台来支持EDA,那么Camel并不是必需的。Camel是一个框架,用于在不同的有效载荷格式之间进行转换,在Web服务、消息传递、RSS订阅等方面进行路由,以及其他160个功能。

从你上面的问题来看,ActiveMQ应该能够直接处理你所描述的用例。

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

我在混合的.Net/Java环境中使用过ActiveMQ,它完全符合其所说的。所有这些都在一个漂亮的Java运行时中完成,可以通过JMX使用您喜欢的监控工具进行检测。


0

应该很好用! ActiveMQ是一个Java应用程序,但是有一个良好的.NET客户端API可供使用。它应该能够满足大部分发布/订阅需求。如果您需要更多中间逻辑,例如路由,实际上,ActiveMQ附带了Camel,因此您可以通过配置一些XML(或Java / Scala代码)在ActiveMQ实例上执行路由、转换、转换等操作。

没有必要直接处理.NET的Camel,因为通信应该通过ActiveMQ完成。 ActiveMQ / Camel组合对于这种任务非常强大 - 而且是免费的。


0

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


0
我已经为我的 .net 应用程序创建了一个 Java 终端适配器。.net 应用程序将 XML 或 JSON 消息发布到 Camel 端点,这在我的情况下是 TibcoEMS 主题。所有路由/过滤/增强等操作都在 Camel 中处理。然后将交换放置在另一个端点上,以供 Java 应用程序检索。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接