3

我将 Person 记录定义为 Avro IDL ( person.avdl ):

@namespace("net.tzolov.avro.extend")
protocol PersonProtocol {
    record Person {
        string firstName;
        string lastName;
    }     
}

我正在生成 java 文件,所以这个正在生成 PersonProtocol.java 和 Person.java。PersonProtocol.java 是空文件,有没有办法可以排除生成此文件...

4

1 回答 1

6

您不能排除此文件的生成,因为 Avro IDL 定义了一个协议(在此处查看更多信息)。

您的PersonProtocol.java是空的,因为您不使用提供 Avro IDL 语言的 RPC。

例如:

@namespace("net.tzolov.avro.extend")
protocol PersonProtocol {
 record Person {
    string firstName;
    string lastName;
 }

 string printMessage(string theMessage);    
}

通过使用代码生成,您将获得定义 RPC 方法的特定行:

void printMessage(java.lang.CharSequence theMessage, org.apache.avro.ipc.Callback<java.lang.CharSequence> callback) throws java.io.IOException;

如果你只是想存储数据,你应该使用 avro schema (avsc)。

于 2013-05-08T12:49:30.757 回答