【问题标题】:Hangfire with Azure Cosmos DB使用 Azure Cosmos DB 的 Hangfire
【发布时间】:2018-11-30 05:39:01
【问题描述】:

我正在尝试将 hangfire 与 Azure Cosmos DB 连接,但出现异常 MongoDB.Driver.MongoCommandException: 'Command renameCollection failed: Command is not supported.'GlobalConfiguration.Configuration.UseMongoStorage

当我尝试连接 Azure VM 托管的 MongoDB 时,它工作正常。

【问题讨论】:

  • 无法重命名 Cosmos DB 的集合。因此,除了在后台在集合之间复制内容(这可能既昂贵又耗时,具体取决于源集合的大小)之外,将无法通过 Cosmos DB 的 MongoDB API 支持重命名。您提到的虚拟机托管的 MongoDB 使用的是本机 MongoDB 引擎,它将为您提供 100% 的 MongoDB 功能集(但它是 Cosmos DB 的独立产品)。

标签: mongodb azure azure-cosmosdb hangfire


【解决方案1】:

我正在为您正在使用的 Hangfire.Mongo 库做出贡献。我们已更改迁移以支持 CosmosDB。因此,您遇到的问题应该在最新版本中得到解决。

我们目前没有针对 CosmosDB 进行主动测试,因为我们以 MongoDB 为目标。但是请将您在 CosmosDB 中发现的问题提交给https://github.com/sergeyzwezdin/Hangfire.Mongo 如果时间允许,我很乐意接受 PR 修复 CosmosDB 相关问题,或者自己提供补丁。

【讨论】:

  • 在使用Hangfire.Mongo lib for Cosmos DB for Mongo API 时,我们将面临2 个问题: 1. Cosmos DB 不支持 Capped Collections - Hangfire.Mongo 尝试创建一些 Capped 集合“hangfire .notifications" 和 "hangfire.signals" 2. 如果我们尝试更改代码为 Cosmos DB 创建一个普通集合,我们必须添加一个 TTL 索引来模拟 Capped 集合。
  • 有没有在 cosmos db 上运行 Hangfire 的解决方案?我面临一个类似的问题,我们已经将我们的 bd 从 vm 托管的 MongoDB 迁移到 cosmos MongoDB,并且应用程序停止工作。我收到一个错误 - 无法创建上限集合。有解决办法吗?
【解决方案2】:

'命令 renameCollection 失败:不支持命令。'

cosmos db mongo api 尚不支持该命令。

据我所知,CosmosDB 仅支持 MongoDB API 的一个子集,并将请求转换为 CosmosDB SQL 等效项。 CosmosDB 有一些不同的行为和结果。但是 CosmosDB 有责任改进他们对 MongoDB 的仿真。

此外,您可以添加反馈here 来提交您的要求。或者如果您想要完整的 MongoDB 功能支持,您可以考虑在 Azure 上使用MongoDB Atlas

【讨论】:

  • 告诉某人某事“显而易见”并没有真正的帮助。另外:鉴于 Cosmos DB 的本机集合(容器)无法重命名,因此无法通过 MongoDB API 支持此操作,除非 1) 重命名可用于本机集合或 2) 执行了后台集合到集合的复制,这是不切实际的,并且可能成本高昂且耗时。
猜你喜欢
  • 2018-06-17
  • 1970-01-01
  • 2021-03-10
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
相关资源
最近更新 更多