为什么我得到的 @CosmosDBInput 属性与我能找到的每个文档不同?

问题描述 投票:0回答:1

我想从 Maven 项目(用 Intellij 编写)中的 Java 代码编写的 Azure Functions 连接到 Azure 中的 Cosmos DB。整个事情应该由 HTTP 请求触发。 HTTP 请求部分效果很好。 虽然我只想从数据库中读取这个tutorial似乎仍然是一个很好的起点。代码应该如下所示:

@FunctionName("processSensorData")
public void processSensorData(
    @EventHubTrigger(
        name = "msg",
        eventHubName = "", // blank because the value is included in the connection string
        cardinality = Cardinality.ONE,
        connection = "EventHubConnectionString")
        TelemetryItem item,
    @CosmosDBOutput(
        name = "databaseOutput",
        databaseName = "TelemetryDb",
        collectionName = "TelemetryInfo",
        connectionStringSetting = "CosmosDBConnectionString")
        OutputBinding<TelemetryItem> document,
    final ExecutionContext context) {...

现在,如果我在 Intelij 中创建一个 HttpTigger 类型的新 Azure Function 项目并添加 @CosmosDBInput 绑定(或 @CosmosDBOutput 绑定并不重要),系统会告诉我无法解析参数“connectionStringSetting”。看来需要“连接”参数。

我通过互联网搜索了不同的来源并询问了Chat GPT,但到处都只显示了connectionStringSetting版本。所以我现在很困惑...

我认为这是某种版本问题?就像例如老版本用的是connectionStringSetting,新版本用的是连接参数?

此外,如果我直接创建一个 @CosmosDBTrigger 函数,它仍然显示他使用了连接参数。

此外,我可以添加完整的代码,但它实际上只是我在 Intelij 中创建 Azure 函数时生成的类和其他文件。由于其余部分工作得很好,我认为问题出在 @CosmosDBTrigger 注释上。

乍一看,这两个参数的工作原理非常相似。

简而言之:我的代码使用连接参数而不是connectionStringSetting参数可能是什么原因?

需要明确的是,我并不是在问如何使用连接参数连接到 Azure,但我想了解为什么我得到的参数与互联网上的每个来源不同? (是否可以保存使用?我是否在不知情的情况下使用了已弃用的版本?pom.xml 中的众多版本中哪一个是已弃用的版本(如果有)?等等)

java azure maven azure-functions azure-cosmosdb
1个回答
0
投票

感谢您提出这个问题。该教程似乎已经过时,很抱歉给您带来了不好的体验。

为输入/输出/触发器绑定提供支持的 Cosmos DB 捆绑包/扩展已于 2023 年更新。

此处提供了迁移指南:https://learn.microsoft.com/azure/azure-functions/migrate-cosmos-db-version-3-version-4?tabs=isolated-process&pivots=programming-language- java

在您的情况下,代码应如下所示:

@FunctionName("processSensorData")
public void processSensorData(
    @EventHubTrigger(
        name = "msg",
        eventHubName = "", // blank because the value is included in the connection string
        cardinality = Cardinality.ONE,
        connection = "EventHubConnectionString")
        TelemetryItem item,
    @CosmosDBOutput(
        name = "databaseOutput",
        databaseName = "TelemetryDb",
        containerName = "TelemetryInfo",
        connection = "CosmosDBConnectionString")
        OutputBinding<TelemetryItem> document,
    final ExecutionContext context) {...

我们将努力更新该教程。

© www.soinside.com 2019 - 2024. All rights reserved.