【问题标题】:Is it possible to use NServiceBus with Azure Service Fabric?是否可以将 NServiceBus 与 Azure Service Fabric 一起使用?
【发布时间】:2016-12-13 13:31:08
【问题描述】:

在我看来,Azure Service Fabric 将维护微服务集群,而 NServiceBus 将促进服务之间的通信。我在网上几乎没有看到关于这种组合的文档,所以我很好奇我是否从根本上错误地理解了这两个东西的工作原理。

【问题讨论】:

    标签: azure architecture nservicebus azure-service-fabric


    【解决方案1】:

    您可以在服务结构中完美地运行 nservicebus,只需将自托管方法与 Azure 服务总线传输以及可能的 sagas 的 azure 存储持久性结合使用。

    我已注意到您在此处记录此内容的请求:https://github.com/Particular/docs.particular.net/issues/2328

    【讨论】:

    • NServiceBus 不会丢失消息,它在底层使用 azure servicebus 以确保可靠的消息交换。此外,今天不可能使用可靠的队列进行消息交换,因为每个分区只允许 1 个写入器,因此您只能在进程内部使用它,而不是在进程之间使用它,因为两者都需要写入/删除。如果您想要可靠性,那么通过本机通信机制公开队列也不是一种选择,因为它本身没有保证的传递语义。(如果任何内部机制允许可靠的消息交换,nservicebus 将利用这些)
    • 可靠的字典和队列是有用的,虽然作为服务内部的存储机制,如果你想用 nservicebus 做到这一点,我在这里有一个峰值github.com/ParticularLabs/NServiceBus.ServiceFabric(虽然有点旧)
    • @alltej 您能否发布一个指向使用此方法的示例的链接。因为 afaik 从技术上讲是不可能的,所以只有状态服务的主实例可以写入队列。
    • NServicebus 是一个嵌入到您的流程中的库,它不需要自己的服务来运行。它可以嵌入到无状态和有状态服务中。如果您使用 Azure 服务总线作为简单处理代码之间的传输,那么它可能根本不需要存储状态(您可以选择内存持久性处理器)。如果您需要复杂的流程协调,您将需要为 Saga 添加持久性提供程序。在无状态的情况下,此提供程序可以是 azure storage one 或 nhibernate(在 sql 数据库上)。 /1
    • 或者,您可以将 saga 数据本地存储在服务结构上,类似于 github.com/ParticularLabs/NServiceBus.ServiceFabric 中的示例,在这种情况下,它必须是一个有状态的服务。 /2
    猜你喜欢
    • 1970-01-01
    • 2016-11-13
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多