我将人员记录定义为Avro IDL(person.avdl):
@namespace("net.tzolov.avro.extend")
protocol PersonProtocol {
record Person {
string firstName;
string lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在生成java文件,所以这个生成PersonProtocol.java和Person.java.PersonProtocol.java是空文件,有没有办法可以排除生成这个文件...
您无法排除此文件的生成,因为Avro IDL定义了协议(请参阅此处).
您的PersonProtocol.java为空,因为您不使用提供Avro IDL语言的RPC.
例如:
@namespace("net.tzolov.avro.extend")
protocol PersonProtocol {
record Person {
string firstName;
string lastName;
}
string printMessage(string theMessage);
}
Run Code Online (Sandbox Code Playgroud)
通过使用代码生成,您将获得定义RPC方法的特定行:
void printMessage(java.lang.CharSequence theMessage, org.apache.avro.ipc.Callback<java.lang.CharSequence> callback) throws java.io.IOException;
Run Code Online (Sandbox Code Playgroud)
如果您只想存储数据,则应使用avro架构(avsc).