这是包含@EventHubTrigger注解的类
package com.function;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.function.annotation.*;
import java.util.Optional;
public class MyFunction extends FunctionInvoker<Object, Object> {
private static final Logger LOGGER = LoggerFactory.getLogger(MyFunction.class);
@FunctionName("triggerFunction")
public void EventHubProcess(
@EventHubTrigger(name = "message", eventHubName = "myeventhub", connection = "CONN_STRING"), User user, final ExecutionContext context)
{
context.getLogger().info("Java HTTP trigger processed a request: " + message);
LOGGER.info("User data received :"+user.toString());
handleRequest(user,context);
}
}
我的 Avro 生成的 Java 类是这样的:
package com.myfunction.avromodel;
import....
@AvroGenerated
public class User extends SpecificRecordBase implements SpecificRecord {
..........
..........
}
我可以使用此类将事件添加到主题中,但是当我使用@EventHubTrigger 批注接收事件时,我的 Azure 函数日志会给出如下错误:
Exception: IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
Stack: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:225)
at com.google.gson.Gson.fromJson(Gson.java:991)
at com.google.gson.Gson.fromJson(Gson.java:956)
at com.google.gson.Gson.fromJson(Gson.java:905)
at com.microsoft.azure.functions.worker.binding.DataOperations.convertFromJson(DataOperations.java:158)
...........................
...........................
...........................
我在这里做错了什么?如何使用@EventHubTrigger 注释获取 Avro 数据?我需要添加任何反序列化逻辑吗?如果是,你能举个例子吗?