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

标签 nservicebus soa akka zeromq amqp

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

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

所有这些东西让我只能专注于应用程序的逻辑,但我只在 .NET 中使用过它,而 Windows 几乎肯定不适合我正在从事的项目。所以我的问题是...

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

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

最佳答案

SonicESB/MQ

我可以根据 Linux 上的 SonicESB 的经验来谈谈。它基本上是 SonicMQ - 一个符合 JMS 的 MOM - 顶部有一个流程中介层;那是服务总线。

优点

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

缺点

  • 交易不跨越服务边界(自版本 7.5 以来可能已发生变化)
  • 没有消息重试机制;我们使用实用服务和消息参数操作自行推出(可能在 7.5 中已更改)
  • 价格昂贵;由核心授权,因此需要付费。

客户支持

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

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

希望对你有帮助

关于nservicebus - *nix 生态系统中存在哪些消息总线技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18925061/

相关文章:

php - 服务层和模型与领域驱动设计的关联

java - 在 Windows 7 上使用 Java SE DK 10.0.01 安装 Oracle SOA Suite 12c

java - 目前有哪些适用于 SOA 的软件、工具和 API 解决方案?

java - 我如何检查 Akka Actor 是否存在(akka 2.2)?

scala - Akka.Kafka - 警告消息 - 恢复分区

NServiceBus 不显眼的约定 DefineCommandsAs 多次

testing - 我如何在测试场景中连接 NServiceBus 的 SqlSaga?

c# - NServiceBus v5.0 是否需要性能计数器?

Scalatra 2.1 Akka future 示例

c# - 如何调试使用 MSMQ 获取消息的服务?