問題タブ [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.
scala - Scrooge によって生成された Thrift Scala クラスを使用するには?
私は Thrift の初心者で、Java と Python で基本的な Thrift サービスを作成し、クライアント/サーバーを実装する方法を最近学びました。
私は Scala で Thrift を使用したいのですが、Java のような構文を使用したくありませんでした。それで、スクルージに出くわしました。
Scrooge によって生成されたクラスと Thrift によって生成されたクラスの正確な違いは何ですか?また、Scrooge によって生成されたクラスを Scala でどのように使用できますか?
Scrooge を使用して Scala のクラスを生成し、同じ thrift ファイルを使用して、thrift generator を使用して Python のコードを生成できますか?
Thrift でコードを生成するにはどうすればよいですか? SBT プラグインについて聞いたことがありますが、その使用方法を十分に理解しているかどうかはわかりません。
scala - Scalaでthriftサーバーを起動するにはどうすればよいですか?
scala で実装したリサイクル サービスを提供したいと考えています。サーバーにはfinagleでscroogeを使用しています。正常に動作しているように見えますが、クライアントに接続して実際に RPC を実行しようとすると、クライアントとサーバーは何もしていないように見えます。私のクライアントは Python で書かれており、thriftpy を使用しています。これは、現在scalaでサーバーを起動する方法です:
編集
少し遊んだ後、finagle クライアントに RPC を実行させました。しかし、Finagle クライアントを Python サーバーに接続できません。これは、私の python サーバーがスローするエラーです。
scala - Finagle Thrift クライアントを閉じるにはどうすればよいですか?
サーバーとクライアントのコードを生成するために scrooge + thrift を使用しています。これまでのところ、すべてがうまく機能しています。
クライアントの使用方法の簡単な例を次に示します。
すべてが正常に機能していますが、プログラムが閉じられていない接続について終了すると、サーバーは文句を言います。client
いろいろ調べましたが、インスタンスを閉じる方法がわかりません。
私の質問は、Finagle のリサイクル クライアントをどのように閉鎖するのですか? 明らかな何かが欠けているように感じます。
scala - Scala でバイナリの Thrift メッセージをデシリアライズする
Scala でバイナリ メッセージを逆シリアル化しようとしています。
ClientError は、Thrift ファイルから Scrooge で生成された特性です。問題は、deserialize() が TBase オブジェクトを想定しているのに、TBase がインターフェイスであることです。どうすればいいですか?両方を実装する新しいクラスを作成する必要がありますか? 助けてくれてありがとう!
scala - Scala で Thrift によって生成されたクラスから TBase オブジェクトを作成する
Thrift (Scrooge) で生成した Scala クラスがいくつかあります。今、私はどうにかしてそれらを TBase クラスとしてインスタンス化する必要があります.b/c TSerializerクラスはこれを入力として必要とします.
これが私のアプローチです:
ClientError は生成されたクラスです。TBase メンバーとしてインスタンス化またはラップするにはどうすればよいですか?
これを行う方法はありますか?前もって感謝します!
scala - Thrift/Scrooge で生成されたクラスを Scala で適切にインスタンス化する方法
crooge で生成されたクラス (またはトレイト、より適切な表現) をインスタンス化したいと考えています。トレイトをインスタンス化できないため、匿名ラッパー クラスを使用して、シリアライズしたいテスト オブジェクトを生成しました。
しかし、このオブジェクトにプロパティを設定することはできません (または、少なくとも方法がわかりません)。これを行う適切な方法は何ですか?背景は、サンプルに同じプロパティがある場合、オブジェクトを作成し、シリアル化し、送信し、逆シリアル化し、機能するかどうかを確認したいということです。助けてくれてありがとう!
scala - scrooge と sbt を使用して、scala と Java の両方で倹約実装を生成するにはどうすればよいですか
リサイクルファイルがあるとしましょう
ここで、Java と scala には異なる名前空間が提供されます。これで、言語を変更することで、scrooge を Java でコンパイルできることがわかりました。
しかし、どうすれば と の両方の生成タスクを持つことができますかjava
?scala
私がこれをやりたい理由は、Java と scala の両方のプロジェクトに、スクルージや倹約をしなくても、事前に作成されたクライアントを提供できるようにするためです。
一般に、消費者にidlを使用して必要なものを構築させるのではなく、生成されたクラスをバンドルすることはアンチパターンと見なされていることを私は知っていますが、私たちが作成した既存の非倹約プロジェクトは、クライアントを含めるパターンに従っているため、物事がより一貫しています(多くのとにかく、消費するプロジェクトは倹約/スクルージを使用しません)。
sbt - テスト段階でスクルージにソース ファイルを生成させますか?
次のようなマルチモジュールビルドがあります。
どこにthriftファイルをfinagle_thrift
含むjarファイルに依存しています。external-client
thrift ファイルを抽出して、thrift ファイルをtarget/thrift_external
クライアントにコンパイルします。
これは機能しますが、機能させるには sbt を 2 回実行する必要があります。初めて sbt を実行すると、ファイルが抽出されません。2回目です。なぜそれが起こっているのか、私は途方に暮れています。
==
編集:
何が起こっているかがわかります。テストで依存関係を解凍しますが、設定は解凍前に評価されるため、生成されたコードは生成されたファイルのリストを取得しません。2回目に実行すると、すでに抽出されているため、thriftファイルが選択されます
== 編集 2:
私はこれを非常にぎこちない方法で解決しました:
そして今、それは最初に解凍され、次にコンパイルされます