我正在尝试使用带有SqlPersistence
和SqlDialect.MsSqlServer
的NServiceBus 6在另一个项目中的一个项目中托管Saga。在我发现的大多数例子中,Saga包含在与托管应用程序相同的程序集中,也许这就是我为什么要挣扎的原因。
当在同一个应用程序中托管所有内容时,NServiceBus.Persistence.Sql.MsBuild
包在构建期间正确输出Saga .sql
文件,然后选择它们并在运行时执行它们。使用单独的应用,只会生成Outbox
,Subscription
和Timeout
.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持久性问题的最佳方法吗?
答案 0 :(得分:1)
您可以将NServiceBus.Persistence.Sql.MsBuild
添加到Saga
项目吗?然后应该在那里找到脚本。不幸的是,他们没有被复制到主机的文件夹,所以你必须从那里把它们带到生产中。或者使用EnableInstallers
生成它们,就像您已经在做的那样。