【问题标题】:Message Broker (Kafka, RabbitMQ) VS Service Bus (nServiceBus)消息代理(Kafka、RabbitMQ)VS 服务总线(nServiceBus)
【发布时间】:2018-06-26 14:44:57
【问题描述】:

我已经阅读了很多关于上述三个系统的信息。但我仍然不确定要使用什么。他们似乎都完成了我所需要的:

我希望在另一个服务触发事件/命令/消息时更新客户端服务。我目前正在运行WCF 服务,并且客户端服务可以主动向其他服务请求更新数据。这应该通过消息代理/服务总线进行更改。 我也不关心客户端是否离线并且没有收到更新,因为当它在线时它会自动通过WCF 获取最新数据。 这就是为什么我认为Kafka 是错误的方法。另一方面,我将此软件部署在其他公司的安全相关环境中。而且由于这是一个遗留应用程序(没有 docker 或易于部署),需要安装 Erlang,所以不能为RabbitMQ 打开所有端口。这给我留下了NServiceBus

  1. 仅运行 NServiceBus 而不是常见的 RabbitMQ+NServiceBus 变体时,我是否会错过任何重要的内容?

  2. 似乎只要我只使用.net堆栈,我就可以使用NServiceBus

  3. 既然我已经有WCF 来轮询更新的数据,那么您是否应该只发送一个命令来启动WCF 调用。还是应该直接通过消息系统发送更新后的数据?

【问题讨论】:

    标签: .net wcf apache-kafka rabbitmq nservicebus


    【解决方案1】:

    注意:我是 Particular Software 的开发人员,也是 NServiceBus 的制造商。如果这听起来过于商业化,我深表歉意。

    因为我已经有 WCF 来轮询更新的数据

    我不确定你的意思。您可能已经在 MSMQ 之上使用 WCF 进行消息传递。这是可能的,也是可行的解决方案。 MSMQ 是队列技术,WCF 是 MSMQ 之上的抽象。

    MSMQ、RabbitMQ、Azure Service Bus、Amazon SQS 都是队列技术,虽然 MSMQ 有点不同,因为它更像是一种总线样式并且分布在机器上。

    NServiceBus 是对这些排队技术的抽象。 NServiceBus 让您可以专注于开发功能,而不是在单一队列技术之上编写管道代码。最重要的是,它增加了大量的附加功能。如果您决定不使用 NServiceBus,则必须自己构建其中的一些功能。这很好,但需要时间。

    回答具体问题

    1. 如果使用 NServiceBus,还需要一种排队技术,我们称之为transport。 MSMQ 或 RabbitMQ 或任何你想要的。
    2. 当然可以,但仍然可以进行本地集成,就像在 Java 和 .NET 之间进行消息传递时所做的那样
    3. 这取决于。通过消息发送它通常更可靠、更快/更容易,因为您不必进行 WCF 调用。除此之外,您可以慢慢移除 WCF,并且需要更少的具有 WCF 知识的开发人员。

    如果您有更多问题,请随时通过https://particular.net/support/与我们联系

    【讨论】:

    • 谢谢。是否有通过 NServiceBus 更新 webClient 的教程或项目?到目前为止,我找到了 Microsoft 的 eShopOnContainers。
    • eShopOnContainers 是相当困难的,我们不完全同意所选择的架构。也许您正在寻找这个展示案例示例,其中前端通过消息传递和 SignalR 进行异步更新。 docs.particular.net/samples/showcase
    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2017-11-01
    相关资源
    最近更新 更多