2013-02-06 82 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)。