有没有一种方法可以使用java中azure函数的@eventhubtrigger获取事件(eventhub)的头数据?

kq0g1dla  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(395)

我有一个用azure函数java库实现的azure函数,它从一个eventhub接收事件,我正在使用@eventhubtrigger,问题是我需要一个事件的头数据,但是我没有找到任何方法来获取它,我已经阅读了文档,什么都没有。我之所以需要这样做,是因为我从eventhub接收到具有不同avro模式的事件,所以我需要区分它们以便对其进行解析。
我非常感谢你的帮助。

vwkv1x7d

vwkv1x7d1#

是的,您可以通过添加 @BindingName("Properties") 例如,下面的方法参数注解。这里需要注意的是,您可以使用绑定表达式绑定到事件的任何元数据。在这种情况下,它是“属性”。而且,基数应该是一个。

@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);
    }

我使用servicebusexplorer作为事件发送者来设置事件的元数据,如下所示,并且能够在“属性”绑定中使用上面的代码在使用者端看到这些元数据。

n、 与java相比,b.c#function sdk有一个优势。在c#中,您可以获取整个事件对象,这样在获取输入中的多个事件时,可以更方便地直接导航元数据。但不幸的是,到目前为止,在javasdk中这是不可能的,因为您必须使用单个基数分别绑定。

相关问题