我有一个使用 azure-functions-java-library 实现的 Azure 函数,它从一个 EventHub 接收事件,并且我正在使用 @EventHubTrigger,问题是我需要来自事件的标头数据,但我看不到任何方法来获取这个,我已经阅读了文档,但什么也没有。我需要这个的原因是因为我从 EventHub 接收具有不同 Avro 模式的事件,所以我需要区分它们以便解析它。
我真的很感激一些帮助。
是的,您可以通过添加@BindingName("Properties")
例如,对方法参数进行注释。这里需要注意的是,您可以使用绑定到事件的任何元数据结合表达 https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs-trigger?tabs=java#event-metadata。在本例中,它是“属性”。另外,基数应该是 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);
}
I used Service Bus Explorer as Event Sender to set metadata of the event as below and was able to see those in the consumer side using above code in "Properties" binding.
![enter image description here](https://i.stack.imgur.com/9XqaZ.png)
注意: C# 函数 SDK 在这方面比 Java 有优势。在 C# 中,您可以获取整个 Event 对象,在获取输入中的多个事件时,可以更轻松地直接导航元数据。但不幸的是,目前在 Java SDK 中这是不可能的,您必须使用单一基数单独绑定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)