问题标签 [scrooge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
418 浏览

scala - 如何在 Thrift/Scrooge 中声明一个返回 Option 值的方法?

我正在使用 Scrooge 生成 Thrift 接口代码,如下所示:

Scrooge 将从上面的 IDL 文件生成此方法:def getUserById(userId: Long): Future[UserInfo].

但是,在 scala 中,可能不存在的值可以通过 Option 数据类型表示。因此,以 Scala 方式生成的节俭代码可能看起来像def getUserById(userId: Long): Future[Option[UserInfo]]. 虽然选项是特定于 scala 的,但无论如何让 Scrooge 支持这个?

非常感谢你!

0 投票
1 回答
1014 浏览

scala - 如何使用 Scrooge 生成的 Thrift Scala 类?

我是 Thrift 的新手,最近才学会如何编写基本的 thrift 服务并在 Java 和 Python 中实现客户端/服务器。

我想在 Scala 中使用 Thrift 并且不想使用类似 Java 的语法。所以遇到了斯克罗吉。

Scrooge 生成的类和 Thrift 生成的类之间到底有什么区别?如何在 Scala 中使用 Scrooge 生成的类?

我可以使用 Scrooge 为 Scala 生成类,并使用相同的 thrift 文件使用 thrift 生成器为 Python 生成代码吗?

如何使用 Thrift 生成代码?我听说过一个 SBT 插件,不确定我是否足够了解如何使用它。

0 投票
0 回答
496 浏览

scala - 如何在 Scala 中启动节俭服务器?

我有一个在 scala 中实现的节俭服务,我想提供服务。我正在为服务器使用带有 finagle 的 scrooge。它似乎运行良好,但是,每当我尝试连接客户端并实际执行 RPC 时,客户端和服务器似乎什么都不做。我的客户端是用 python 编写的,我使用的是 thriftpy。这就是我目前在 scala 中启动服务器的方式:

编辑

在玩了一些之后,我让 finagle 客户端做一个 RPC。但是,我无法将我的 Finagle 客户端连接到 python 服务器。这是我的 python 服务器抛出的错误:

0 投票
1 回答
162 浏览

scala - 如何在 Scrooge 中使用 thrift 文件生成接口类

喜欢这个命令

0 投票
2 回答
1263 浏览

scala - 如何关闭 Finagle Thrift 客户端?

我正在使用 scrooge + thrift 来生成我的服务器和客户端代码。到目前为止一切正常。

这是我如何使用客户端的简化示例:

一切正常,但是当程序退出时服务器会抱怨未关闭的连接。我已经查看了所有内容,但似乎无法弄清楚如何关闭client实例。

所以我的问题是,你如何关闭 Finagle 节俭客户端?我觉得我错过了一些明显的东西。

0 投票
2 回答
890 浏览

scala - 在 Scala 中反序列化二进制 Thrift 消息

我正在尝试反序列化 Scala 中的二进制消息:

其中 ClientError 是 Scrooge 从 Thrift 文件生成的特征。问题是,deserialize() 需要一个 TBase 对象,但 TBase 是一个接口。我该怎么做呢?我是否必须创建一个实现两者的新类?感谢您的帮助!

0 投票
2 回答
385 浏览

scala - 在 Scala 中从 Thrift 生成的类创建 TBase 对象

我有一些使用 Thrift (Scrooge) 生成的 Scala 类。现在我需要以某种方式将它们实例化为 TBase 类,b/c TSerializer类需要这个作为输入

这是我的方法:

ClientError 是生成的类。如何实例化它或将其包装为 TBase 成员?

任何想法如何做到这一点?提前致谢!

0 投票
1 回答
324 浏览

scala - 如何在 Scala 中正确实例化 Thrift/Scrooge 生成的类

我想实例化一个 crooge 生成的类(或特征,更好的说法)。现在因为我不能实例化一个特征,我使用了一个匿名包装类来生成一些我想要实现的测试对象:

但是我不能为这个对象设置任何属性(或者至少我不知道如何)。这样做的正确方法是什么?背景是我想创建一个对象,序列化它,发送它,反序列化它并检查它是否有效,如果样本具有相同的属性。谢谢你的帮助!

0 投票
0 回答
512 浏览

scala - 如何使用 scrooge 和 sbt 在 scala 和 java 中生成 thrift 实现

假设我有一个旧文件

其中为 java 和 scala 提供了不同的名称空间。现在我知道我可以通过更改语言使 scrooge 在 java 中编译

但是我怎么能同时拥有生成任务javascala

我想这样做的原因是,我可以为 java 和 scala 项目提供预制的客户端,而不必引入 scrooge 或 thrift。

我知道这通常被认为是一种反模式来捆绑生成的类,而不是让消费者使用 idl 来构建他们需要的东西,但是我们生产的现有非节俭项目遵循包括客户的模式,因此它使事情更加一致(许多消费项目无论如何都不会使用thrift/scrooge)。

0 投票
0 回答
78 浏览

sbt - 获取 scrooge 在测试阶段生成源文件?

我有一个多模块构建,看起来有点像:

Wherefinagle_thrift依赖于external-client其中包含 thrift 文件的 jar 文件。我希望它提取节俭文件target/thrift_external并将节俭文件编译到客户端中。

这确实有效,但是我必须执行 sbt 两次才能使其正常工作。我第一次运行 sbt 时,它不会提取文件。第二次这样。我不知道为什么会这样。

==

编辑:

我看到发生了什么。它确实解压缩了测试的依赖关系,但是因为在解压缩之前评估了设置,所以生成的代码不会获得生成的文件列表。第二次运行时,它已经被解压了,所以它会拾取 thrift 文件

== 编辑 2:

我以一种超级笨拙的方式解决了这个问题:

现在它首先被解包,然后被编译