2013-02-06 43 views
3

我定义了一个人纪录的Avro IDL(person.avdl):AVRO AVDL文件生成

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

我生成的Java文件,所以这是一个产生PersonProtocol.java和Person.java。 的PersonProtocol.java是空文件,是有办法,我可以排除生成此文件...

回答

5

你不能排除这种文件的产生是因为IDL的Avro定义了一个协议(详见here)。

您的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模式(avsc)。