【问题标题】:mongo-csharp-driver 2.0 / nservicebus.mongodb 2.1 can no longer connect to Mongomongo-csharp-driver 2.0 / nservicebus.mongodb 2.1 无法再连接到 Mongo
【发布时间】:2015-10-24 00:19:51
【问题描述】:

我们最近将 NserviceBus.MongoDb 包从 2.0.3 更新到了 2.1。这也将 mongo-csharp-driver 包从 1.10 更新到了 2.0.1。我们现在在服务启动时看到以下异常:

2015-07-08 11:29:16,589 [1] WARN NServiceBus.MongoDB.Internals.MongoHelpers [(null)] - 无法使用以下方式联系 Mongo:server201.localco.test:27017。 如果您使用的是副本集,请确保所有 Mongo 实例 server201.localco.test:27017 都可用。 要将 NServiceBus 配置为使用不同的连接字符串,请在配置文件中添加一个名为“NServiceBus/Persistence”的连接字符串。 原因:System.InvalidOperationException:没有当前主节点。 在 MongoDB.Driver.MongoServer.Ping() 在 NServiceBus.MongoDB.Internals.MongoHelpers.VerifyConnectionToMongoServer(MongoClientAccessor mongoClientAccessor) 在 d:\Development\NServiceBus.MongoDB\src\NServiceBus.MongoDB\Internals\MongoHelpers.cs:line 50

我们的 nservicebus 端点配置中唯一相关的行是:

configuration.UsePersistence<MongoDBPersistence>();    

我们的连接字符串是:

<add name="NServiceBus.Persistence" connectionString="mongodb://server201.localco.test/?replicaSet=rs0" />

如果我将 2.1/2.0.1 卸载/回滚到 2.0.3/1.10 (nservicebus.mongodb/mongo-csharp-driver),错误就会消失。

更新:我看到数据库本身(带有 TimoutData 集合)实际上是在 Mongo 中创建的......

【问题讨论】:

  • 检查您的程序集扫描
  • 你能说得更具体点吗?这是我们总共拥有的当前配置语句:public void Customize(BusConfiguration configuration) { configuration.AssembliesToScan(AppDomain.CurrentDomain.GetAssemblies()); configuration.UseTransport&lt;RabbitMQTransport&gt;(); configuration.UsePersistence&lt;MongoDBPersistence&gt;(); }
  • 对不起,我误读了您上面的评论(回滚工作正常)

标签: mongodb nservicebus


【解决方案1】:

更改您的连接字符串

&lt;add name="NServiceBus.Persistence" connectionString="mongodb://server201.localco.test/?replicaSet=rs0" /&gt;

&lt;add name="NServiceBus/Persistence/MongoDB" connectionString="mongodb://server201.localco.test/?replicaSet=rs0" /&gt;

或像上面一样保留它并将名称设置为

config
    .UsePersistence<MongoDbPersistence>()
    .SetConnectionStringName("NServiceBus.Persistence");

【讨论】:

  • 更改连接字符串似乎不起作用:An exception of type 'System.Configuration.ConfigurationErrorsException' occurred in NServiceBus.MongoDB.dll but was not handled in user code Additional information: Cannot configure Mongo Persister. No connection string named NServiceBus.Persistence was found 我尝试了两种方法,更改了连接字符串并在代码中明确设置。与原始问题相同。
  • 我已经简要地查看了 MongoDB 持久性 repo 上的代码。它应该工作。您是否尝试过在本地克隆 repo,检查确切版本并调试配置代码?
【解决方案2】:

来自 Github/Nuget 的最新版本的软件包已经解决了这个问题。 See bug report

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2019-06-21
    • 1970-01-01
    相关资源
    最近更新 更多