Domanda

Vorrei utilizzare scribe per esportare alcuni dati da un'applicazione Erlang, ma ho un problema con l'esecuzione del client Thrift.Installo Thrift, nella directory lib di erlang.Sto usando: thrift-0.6.1

Ho trovato un codice di esempio per connettersi da erlang tramite parsimonia a scribe:

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

ma erlang restituisce questo errore:

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

Quando provo a eseguire application:start(thrift), per un momento vedo un completamento del codice per thrift*

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

e non esiste un metodo start_link.

È stato utile?

Soluzione

Penso che in questi giorni tu voglia qualcosa come thrift_client_util:new(Host, Port, ProtoModule, Options)

che nel tuo caso sarebbe:

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

E un punto importante da tenere a mente con l'API parsimoniosa in erlang è che tutte le chiamate restituiscono un nuovo valore di stato del client che è necessario utilizzare per le chiamate successive.Usare due volte un valore di stato del cliente porta a piangere e digrignare i denti.

Altri suggerimenti

Ho integrato la parsimonia nel mio progetto un paio di mesi fa.Sono necessari alcuni passaggi di inizializzazione per ottenere il client.

  {ok, TFactory} = 
    thrift_socket_transport:new_transport_factory(
      "localhost", 8899, []),
  {ok, PFactory} = 
    thrift_binary_protocol:new_protocol_factory(TFactory, []),
  {ok, Protocol} = PFactory(),
  {ok, Client} = thrift_client:new(Protocol, scribe_thrift),

Per più contesto, probabilmente puoi dare un'occhiata a un modulo dal mio repository git.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top