无法使用SQL持久性从另一个服务托管NServiceBus Saga

时间:2018-02-02 12:52:03

标签: msbuild nservicebus nservicebus-sagas

我正在尝试使用带有SqlPersistenceSqlDialect.MsSqlServer的NServiceBus 6在另一个项目中的一个项目中托管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'未找到,因此不会执行任何传奇创建脚本。

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

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

1 个答案:

答案 0 :(得分:1)

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