Avro:如何从AVDL定义协议?

时间:2013-08-29 12:39:28

标签: idl avro

阅读AVPR很容易:

Protocol protocol = Protocol.parse(new File("ht-proto.avpr"));

但这对IDL文件(AVDL)不起作用。

如何阅读AVDL文件以便我可以完成以下任务,但使用AVDL代替AVPR:

public static void main (String[] args)  {
     Main.class.getResourceAsStream("net/protocol_man.avdl");
     Protocol protocol  =
           Protocol.parse(Main.class.getResourceAsStream("net/protocol_man.avpr"));
                                                   //this doesnt work for AVDL       
 }

1 个答案:

答案 0 :(得分:0)

如果您正在使用maven。你可以添加以下插件。

这将创建java源代码,并且你可以做很多事情。

我的意思是你以后可以引用其中一个生成的类,例如Event.class

并询问它的架构事件。$ SCHEMA

  <plugin>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro-maven-plugin</artifactId>
            <version>1.7.3</version>
            <executions>
                <execution>
                    <id>schemas</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>idl-protocol</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>net/protocol_man.avdl</include>
                        </includes>
                        <fieldVisibility>PRIVATE</fieldVisibility>
                        <sourceDirectory>src/main/resources</sourceDirectory>
                        <outputDirectory>${project.build.directory}/generated-sources/java
                        </outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>