问题
I am attempting to host a Saga from one project in another project using NServiceBus 6 with SqlPersistence
and SqlDialect.MsSqlServer
. In most examples I have found, the Saga is contained in the same assembly as the hosting app, and perhaps this is why I am struggling.
When hosting everything in the same app, the NServiceBus.Persistence.Sql.MsBuild
package correctly outputs Saga .sql
files during the build and then picks these up and executes them on run. Using a separate app, only the Outbox
, Subscription
and Timeout
.sql
files are generated, not the Saga ones. The following entry is then logged on run:
INFO NServiceBus.Persistence.Sql.Installer Directory '[PATH]\SagaPersistence\Service\bin\Debug\NServiceBus.Persistence.Sql\MsSqlServer\Sagas' not found so no saga creation scripts will be executed.
A full VS 2017 repro may be found at https://github.com/WolfyUK/NServiceBusSagaSqlPersistence.
Firstly, is it a bad idea to host a Sagas from another service, rather than being self-hosted? If not, can someone advise the best way to resolve the SQL Persistence issue?
回答1:
Can you add NServiceBus.Persistence.Sql.MsBuild
to the Saga
project? The scripts should then be found there. Unfortunately they're not copied to the host its folder, so you'll have to take them from there into production. Or have them generated by using EnableInstallers
, like you're already doing.
来源:https://stackoverflow.com/questions/48583138/unable-to-host-an-nservicebus-saga-from-another-service-with-sql-persistence