如何使用 MongoDB 在 Rebus 中持久化 saga
How to persist a saga in Rebus using MongoDB
我正在配置一个总线,我需要配置 Rebus 保存 sagas 的方式。我会使用官方 C# Mongo 驱动程序版本 1.10 在 MongoDB 中保留 sagas,所以我写的是这样的:
return Rebus.Config.Configure.With(new CastleWindsorContainerAdapter(container))
.Sagas(s => s.StoreInMongoDb())
...
其中 StoreInMongoDB
是扩展方法:
//
// Summary:
// Configures Rebus to use MongoDB to store sagas, using the specified collection
// name resolver function. If the collection name resolver is omitted, collection
// names will be determined by using the Name property of the saga data's System.Type
public static void StoreInMongoDb(this StandardConfigurer<Rebus.Sagas.ISagaStorage> configurer, MongoDB.Driver.IMongoDatabase mongoDatabase, Func<Type, string> collectionNameResolver = null);
问题是:由于MongoDatabase
没有实施IMongoDatabase
我该如何处理这种情况?
Rebus 已更新为使用官方 MongoDB 驱动程序的第 2 版。
这样做是为了利用其执行正确的 C# async
/await
支持的异步 I/O.
的能力
恐怕目前不支持旧的 MongoDB 驱动程序(1.10 及更早版本),尽管您可以从 Rebus 历史中挖掘出您确实需要它。
我建议你看看你是否可以使用新的驱动程序,不过,可能会在不同的地方编写一些你自己的扩展方法,以补充新版本提供的相当粗糙的 API .
我正在配置一个总线,我需要配置 Rebus 保存 sagas 的方式。我会使用官方 C# Mongo 驱动程序版本 1.10 在 MongoDB 中保留 sagas,所以我写的是这样的:
return Rebus.Config.Configure.With(new CastleWindsorContainerAdapter(container))
.Sagas(s => s.StoreInMongoDb())
...
其中 StoreInMongoDB
是扩展方法:
//
// Summary:
// Configures Rebus to use MongoDB to store sagas, using the specified collection
// name resolver function. If the collection name resolver is omitted, collection
// names will be determined by using the Name property of the saga data's System.Type
public static void StoreInMongoDb(this StandardConfigurer<Rebus.Sagas.ISagaStorage> configurer, MongoDB.Driver.IMongoDatabase mongoDatabase, Func<Type, string> collectionNameResolver = null);
问题是:由于MongoDatabase
没有实施IMongoDatabase
我该如何处理这种情况?
Rebus 已更新为使用官方 MongoDB 驱动程序的第 2 版。
这样做是为了利用其执行正确的 C# async
/await
支持的异步 I/O.
恐怕目前不支持旧的 MongoDB 驱动程序(1.10 及更早版本),尽管您可以从 Rebus 历史中挖掘出您确实需要它。
我建议你看看你是否可以使用新的驱动程序,不过,可能会在不同的地方编写一些你自己的扩展方法,以补充新版本提供的相当粗糙的 API .