2

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

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

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

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

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

4

2 回答 2

1

SonicESB / MQ

I can speak from experience with SonicESB on Linux. It's basically SonicMQ - a JMS compliant MOM - with a process mediation layer on top; that's the service bus.

Pros

  • Itinerary-based routing; messages contain their own workflow for what services to visit
  • Intra-container messaging; increases performance by routing messages within the ESB container, avoiding the broker entirely.
  • Web service endpoints; ESB service may be invoked over HTTP endpoints, bridging the gap between non-Java/JMS clients and the bus.
  • Good development tools in eclipse for developing and debugging esb services and processes in Java.
  • Administration tools aren't bad either.

Cons

  • Transactions don't span service boundaries (may have changed since version 7.5)
  • No message retry mechanism; we rolled our own using a utility service and message parameter manipulation (may have changed in 7.5)
  • Pricey; licensed by core, so expect to pay for it.

Client Support

In terms of what technologies can send and receive to/from SonicESB, anything Java JMS, that's for sure. Sonic also offers a library in .net/C#/VB for Windows technology, so you can send and receive messages from the bus. This was a huge plus for us since our development teams use RIA's built in C#.

You may want to check out MuleESB, an open source service bus.

Hope it helps,

于 2013-09-20T22:11:12.403 回答
1

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

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

也关于客户端接口。您可以在此处找到当前列表

于 2013-09-27T11:04:35.673 回答