我想从 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 中的众多版本中哪一个是已弃用的版本(如果有)?等等)
感谢您提出这个问题。该教程似乎已经过时,很抱歉给您带来了不好的体验。
为输入/输出/触发器绑定提供支持的 Cosmos DB 捆绑包/扩展已于 2023 年更新。
在您的情况下,代码应如下所示:
@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) {...
我们将努力更新该教程。