【问题标题】:What message bus technologies exist in the *nix ecosystem?*nix 生态系统中存在哪些消息总线技术?
【发布时间】:2013-09-26 07:56:59
【问题描述】:

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

  • 消息的处理是事务性的(并为您处理),因此它是“一次且仅一次”(而不是“至少一次”)
  • 内置 saga 支持
  • 支持自动重试
  • Pub/sub 支持(但我假设所有服务/消息总线都支持此功能)

所有这些内容让我只能专注于应用程序的逻辑,但我只在 .NET 中使用过它,而且对于我正在从事的项目,Windows 几乎可以肯定是一个非入门者。所以我的问题是......

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

奖励:除了上述功能之外,还有哪些语言可以发送/接收/处理来自总线的消息?能够灵活地用 A 语言编写一个服务并用 B 语言编写另一个服务对于这个项目来说是非常有利的。

【问题讨论】:

  • 请原谅我不分青红皂白的标记——我想尽可能多地标记选项。
  • Mono 上的 .NET 是否适合您的项目?
  • @UdiDahan 这可能会面临很大的反对。与 VS 相比,开发工具较差,而且它们通常不喜欢强类型、编译语言(即 C#)。不过,我仍然想知道 Mono 上的 NSB 与其他选项相比如何。
  • 我是这么想的。
  • 我认为,最佳情况是使用 NSB 作为基础架构,但不使用 C# 编写处理程序(我的同事更喜欢 Ruby,目前我更喜欢 Node)。这甚至可行吗?有什么计划可以让这成为可能吗?它将为 NSB 打开很多市场......

标签: nservicebus soa akka zeromq amqp


【解决方案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 还为 Windows 技术提供了一个 .net/C#/VB 库,因此您可以从总线发送和接收消息。这对我们来说是一个巨大的优势,因为我们的开发团队使用 C# 中内置的 RIA。

您可能想查看MuleESB,一个开源服务总线。

希望对你有帮助,

【讨论】:

    【解决方案2】:

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

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

    还有关于客户端接口。可以找到当前列表here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 2010-09-22
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      相关资源
      最近更新 更多