【问题标题】:Azure Functions in Java - using value from Service Bus trigger in Cosmos DB input bindingJava 中的 Azure Functions - 在 Cosmos DB 输入绑定中使用来自服务总线触发器的值
【发布时间】:2022-10-13 23:14:25
【问题描述】:

我有一个通过服务总线接收 msgs 的 Azure 函数(Java 中),我想根据传入消息中的一个属性获取 Cosmos DB 记录的句柄,例如我收到这样的 json 消息: { "id": "foo" },我希望 Cosmos Input 绑定给我相应的 DB 记录。

有很多关于如何使用 http 触发器执行此操作的示例,但我不知道如何使用服务总线触发器。我试过这样的变种:

    @FunctionName("ServiceBusListener")
    public void serviceBusListener(
        @ServiceBusTopicTrigger(
            name = "message",
            topicName = "mytopic", 
            subscriptionName = "mysubscription", 
            connection = "AzureWebJobsServiceBus") String message,
        @CosmosDBInput(name = "name",
              databaseName = "MyDatabase",
              collectionName = "MyCollection",
              connectionStringSetting = "CosmosDbConnectionString",
              id = "{message.id}") String item,

        final ExecutionContext context) {
            // do something with item
        }

有没有办法做到这一点?

[编辑] 忘了提C# supports doing this。我的猜测是 Azure 只是不支持 Java,因为 C# 支持类似的东西,但 Java 不支持,比如通过输入绑定获取 DocumentClient 或 CosmosClient 的句柄。

【问题讨论】:

    标签: java azure-functions


    【解决方案1】:

    我与 Azure 产品经理进行了交谈,他确认 Java 在 Functions 中落后于 C#,并且尚不支持 Cosmos 输入/输出绑定。性能也滞后,例如HTTP 触发器都是阻塞的。目前,推荐使用 Cosmos 客户端的静态单例实例。

    我将在我的应用程序 b/c 中坚持使用 Java,这是一个简单的应用程序,我们将 Java 用于其他一切,我希望 Functions Java 支持最终会赶上。但是,如果我没有所有其他考虑因素并且这是一个独立的项目,我可能会在此时使用 C#。

    【讨论】:

      猜你喜欢
      • 2022-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2021-11-21
      相关资源
      最近更新 更多