4

scribeを使用してErlangアプリケーションから一部のデータをエクスポートしたいのですが、Thriftクライアントの実行に問題があります。Thriftをerlanglibディレクトリにインストールします。私が使用しているもの:thrift-0.6.1

erlangからthriftを介してスクライブに接続するためのサンプルコードを見つけました:

{ok, C} = thrift_client:start_link("localhost", 1463, scribe_thrift, 
                                     [{strict_read, false}, 
                                      {strict_write, false}, 
                                      {framed, true}]),

しかし、erlangはこのエラーを返しています:

** exception error: undefined function thrift_client:start_link/4

実行しようとするとapplication:start(thrift)、しばらくの間、次のコードが完了します。thrift*

7> thrift_client:
   call/3         close/1        module_info/0  module_info/1  new/2          
   send_call/3   

方法はありませんstart_link

4

2 に答える 2

6

最近は次のようなものが欲しいと思いますthrift_client_util:new(Host, Port, ProtoModule, Options)

あなたの場合は次のようになります。

thrift_client_util:new("localhost", 1463, scribe_thrift,
                       [{strict_read, false}, 
                        {strict_write, false}, 
                        {framed, true}]).

また、erlangのthrift APIで覚えておくべき重要な点は、すべての呼び出しが、後続の呼び出しに使用する必要のある新しいクライアント状態値を返すことです。クライアントの状態値を2回使用すると、嘆きと歯ぎしりが発生します。

于 2011-04-29T23:24:55.540 に答える
2

私は数ヶ月前に自分のプロジェクトに節約を統合しました。クライアントを取得するには、いくつかの初期化手順が必要です。

  {わかりました、TFactory} =
    thrift_socket_transport:new_transport_factory(
      "localhost"、8899、[])、
  {わかりました、PFactory} =
    thrift_binary_protocol:new_protocol_factory(TFactory、[])、
  {ok、プロトコル} = PFactory()、
  {ok、Client} = thrift_client:new(Protocol、scribe_thrift)、

より多くのコンテキストについては、おそらく私のgitリポジトリからモジュールを見ることができます。

于 2011-04-30T04:40:26.520 に答える