* nix生态系统中存在哪些消息总线技术?

时间:2013-09-20 20:11:33

标签: nservicebus soa akka zeromq amqp

我对SOA的唯一体验来自于使用NServiceBus。它设计得非常好,并且有一些我非常喜欢的漂亮功能:

  • 处理消息是交易性的(并为您照顾),因此它“只有一次”(而不是“至少一次”)
  • 内置传奇支持
  • 自动重试支持
  • 发布/订阅支持(但我假设所有服务/消息总线都支持此功能)

所有这些让我专注于应用程序的逻辑,但我只在.NET中使用它,而Windows几乎肯定不是我正在开发的项目的首发。所以我的问题是......

* nix生态系统中存在哪些服务总线技术(包括在Mono上运行NSB的经验)以及它们如何衡量在Windows上运行的NServiceBus?

加分:除了上述功能外,哪些语言可以从总线发送/接收/处理消息?能够灵活地用语言A编写一个服务而用语言B编写另一个服务对于这个项目非常有利。

2 个答案:

答案 0 :(得分:1)

SonicESB / MQ

我可以在Linux上体验SonicESB的经验。它基本上是SonicMQ - 一个符合JMS的MOM - 顶部有一个进程中介层;这是服务总线。

赞成

  • 基于行程的路由;消息包含自己的工作流程,以便访问哪些服务
  • 集装箱内消息传递;通过在ESB容器中路由消息来提高性能,从而完全避免代理。
  • Web服务端点;可以通过HTTP端点调用ESB服务,弥补非Java / JMS客户端与总线之间的差距。
  • eclipse中用于开发和调试Java中的esb服务和进程的良好开发工具。
  • 管理工具也不错。

缺点

  • 事务不跨越服务边界(自7.5版以来可能已更改)
  • 没有消息重试机制;我们使用实用程序服务和消息参数操作(可能已在7.5中更改)
  • 高价;由核心许可,因此期望支付它。

客户支持

关于哪些技术可以向/从SonicESB发送和接收,任何Java JMS,这是肯定的。 Sonic还提供.net / C#/ VB for Windows技术的库,因此您可以从总线发送和接收消息。这对我们来说是一个巨大的优势,因为我们的开发团队使用RIA内置的C#。

您可能需要查看MuleESB,这是一种开源服务总线。

希望它有所帮助,

答案 1 :(得分:1)

自从我认真使用NServiceBus以来已经有一段时间了(事实上,那时候,它甚至没有被称为 - 它只是替换库Udi写的,我们不得不在一个糟糕的通讯库中使用联合项目:))所以我不知道所有NServiceBus功能。

我会说,根据我所知,Apache Kafka(最初由LinkedIn开发)将是一个很好的起点。它具有相对强大的排序保证,支持发布/订阅消费者池并支持工作流行为,例如Samza,它提供了一个流媒体框架

还有关于客户端界面。您可以找到当前列表here