如何使用 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 .