Come caricare il client dell'usato in Erlang
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
.
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.