java - 有没有办法使用Java中的Azure Functions的@EventHubTrigger来获取事件(EventHub)的标题数据?

标签 java azure azure-functions azure-eventhub azure-java-tools

我有一个使用 azure-functions-java-library 实现的 Azure 函数,它从一个 EventHub 接收事件,并且我正在使用 @EventHubTrigger,问题是我需要来自事件的 header 数据,但我没有看到任何为了得到这个,我已经阅读了文档,但什么也没有。我需要这个的原因是因为我从 EventHub 接收具有不同 Avro 架构的事件,因此我需要区分它们以便解析它。

我真的很感激一些帮助。

最佳答案

是的,您可以通过向方法参数添加 @BindingName("Properties") 注释来检索消息元数据,如下所示。这里需要注意的是,您可以使用binding expression绑定(bind)到事件的任何元数据。 。在本例中,它是“属性”。另外,基数应该是 1。

@FunctionName("EventHubExample")
    public void logEventHubMessage(
        @EventHubTrigger(name = "message", eventHubName = "test", connection = "AzureEventHubConnection", consumerGroup = "$Default", cardinality = Cardinality.ONE, dataType = "string") 
        String message,
        final ExecutionContext context,
        @BindingName("Properties")
        Map<String, Object> properties) {            
        context.getLogger().info("Event hub message received: " + message + ", properties: " + properties);
    }

我使用 Service Bus Explorer 作为事件发送器来设置事件的元数据,如下所示,并且能够在“属性”绑定(bind)中使用上述代码在消费者端查看这些元数据。 enter image description here

注意C# 函数 SDK 在这方面比 Java 有优势。在 C# 中,您可以获取整个 Event 对象,在获取输入中的多个事件时,可以更轻松地直接导航元数据。但不幸的是,目前在 Java SDK 中这是不可能的,您必须使用单一基数单独绑定(bind)。

关于java - 有没有办法使用Java中的Azure Functions的@EventHubTrigger来获取事件(EventHub)的标题数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63714718/

相关文章:

java - 为什么列表中的元素数称为 "size"而数组的长度称为 "length"?

azure - 逻辑应用设计器无法选择 Twilio - 获取消息

azure - 从 Durable Function 运行未知数量的事件函数

ruby-on-rails - 如何在 Rails 应用程序中嵌入 PowerBI Tile? (并对其应用过滤器)

visual-studio - 没有管理员权限的 Windows Azure 模拟器

使用无服务器创建的 Azure 队列触发器函数不会触发

Azure函数: The binding type(s) 'eventHubTrigger' are not registered

java - 使用步骤决定器和 block 时的 Spring 批处理

java - 使用 Selenium PageObjects 自动化登录过程

java - 为什么 TreeSet 在添加新元素之前不比较所有元素?