【问题标题】:Unable to host an NServiceBus Saga from another Service with SQL Persistence无法使用 SQL 持久性从另一个服务托管 NServiceBus Saga
【发布时间】:2018-02-02 12:52:02
【问题描述】:

我正在尝试使用 NServiceBus 6 和 SqlPersistenceSqlDialect.MsSqlServer 在另一个项目中托管一个项目的 Saga。在我发现的大多数示例中,Saga 与托管应用程序包含在同一个程序集中,也许这就是我苦苦挣扎的原因。

当在同一个应用程序中托管所有内容时,NServiceBus.Persistence.Sql.MsBuild 包在构建过程中正确输出 Saga .sql 文件,然后选择这些文件并在运行时执行它们。使用单独的应用程序,只会生成 OutboxSubscriptionTimeout .sql 文件,而不是 Saga 文件。然后登录运行以下条目:

INFO NServiceBus.Persistence.Sql.Installer 目录 '[PATH]\SagaPersistence\Service\bin\Debug\NServiceBus.Persistence.Sql\MsSqlServer\Sagas' 未找到,因此不会执行 saga 创建脚本。

完整的 VS 2017 repro 可以在 https://github.com/WolfyUK/NServiceBusSagaSqlPersistence 找到。

首先,从另一个服务托管 Sagas 而不是自托管是一个坏主意吗?如果没有,有人可以建议解决 SQL 持久性问题的最佳方法吗?

【问题讨论】:

    标签: msbuild nservicebus nservicebus-sagas


    【解决方案1】:

    您可以将NServiceBus.Persistence.Sql.MsBuild 添加到Saga 项目吗?然后应该在那里找到脚本。不幸的是,它们没有被复制到主机的文件夹中,因此您必须将它们从那里带到生产环境中。或者使用EnableInstallers 生成它们,就像您已经在做的那样。

    【讨论】:

    • 我已经意识到 Saga 脚本输出到第二个项目的 bin 文件夹,但仅在 Rebuild 上。在BuildDebug 上,文件被清除。
    • 您可以将NServiceBus.Persistence.Sql 包直接添加到宿主项目中。这将获得在宿主项目的bin 文件夹下创建的 SQL 脚本。
    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多