2

我见过两种工具来生成与 finagle 兼容的节俭。

  1. thrift-0.5.0-finagle是不是太旧了?最新的是 thrift 0.9。我还能用吗?

  2. 或者我应该使用Scrooge吗?它在 Scala 上生成 Java 绑定。

4

2 回答 2

3

如果你的项目是 Scala 或 Java,你应该使用 Scrooge。thrift-0.5.0-finagle 已被弃用。

于 2013-04-01T20:22:50.657 回答
0

你应该使用斯克罗吉。Scrooge 由 Twitter 开发。而 Finagle 也是由 Twitter 开发的。

提示:

scrooge maven 插件应该配置如下

<plugin>
    <groupId>com.twitter</groupId>
    <artifactId>scrooge-maven-plugin</artifactId>
    <version>${scrooge.version}</version>
    <configuration>
        <thriftSourceRoot>${basedir}/src/main/thrift</thriftSourceRoot>
        <includes>
            <set>SyncWrite.thrift</set>
        </includes>
        <outputDirectory>${basedir}/src/main/gen/</outputDirectory>
        <thriftNamespaceMappings>
            <thriftNamespaceMapping>
                <from>com.ganji.cdc.xapian.thrift.cpp</from>
                <to>com.ganji.cdc.xapian.thrift.cpp</to>
            </thriftNamespaceMapping>
        </thriftNamespaceMappings>
        <language>experimental-java</language>
        <thriftOpts>
            <thriftOpt>--finagle</thriftOpt>
        </thriftOpts>
        <buildExtractedThrift>false</buildExtractedThrift>
    </configuration>
    <executions>
        <execution>
            <id>thrift-sources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
        <execution>
            <id>thrift-test-sources</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

语言是experimental-java。如果你配置为 Scrooge 文件,使用javalibthrift库必须使用0.5.0.

有如下依赖库

<finagle.version>6.25.0</finagle.version>
<scrooge.version>3.18.1</scrooge.version>

<!-- Finagle Start -->
<dependency>
    <groupId>org.apache.thrift</groupId>
    <artifactId>libthrift</artifactId>
    <version>0.9.0</version>
</dependency>
<dependency>
    <groupId>com.twitter</groupId>
    <artifactId>scrooge-core_2.10</artifactId>
    <version>${scrooge.version}</version>
</dependency>
<dependency>
    <groupId>com.twitter</groupId>
    <artifactId>scrooge-runtime_2.10</artifactId>
    <version>${scrooge.version}</version>
</dependency>
<dependency>
    <groupId>com.twitter</groupId>
    <artifactId>util-core_2.10</artifactId>
    <version>6.24.0</version>
</dependency>
<dependency>
    <groupId>com.twitter</groupId>
    <artifactId>finagle-core_2.10</artifactId>
    <version>${finagle.version}</version>
</dependency>
<dependency>
    <groupId>com.twitter</groupId>
    <artifactId>finagle-thrift_2.10</artifactId>
    <version>${finagle.version}</version>
</dependency>
<!-- Finagle End -->

就这些。

于 2015-06-03T08:50:41.410 回答