Pergunta

Desejo usar o scribe para exportar alguns dados de um aplicativo Erlang, mas tenho um problema ao executar o cliente Thrift.Eu instalo o Thrift, no diretório erlang lib.Estou usando: thrift-0.6.1

Eu encontrei alguns exemplos de código para conectar de erlang via thrift para scribe:

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

mas erlang está retornando este erro:

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

Quando tento executar application:start(thrift), por um momento vejo algum autocompletar de código para thrift*

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

e não há nenhum método start_link.

Foi útil?

Solução

Acho que hoje em dia você quer algo como thrift_client_util:new(Host, Port, ProtoModule, Options)

que no seu caso seria:

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

E um ponto importante a se ter em mente com a API thrift no erlang é que todas as chamadas retornam um novo valor de estado do cliente que você deve usar para chamadas subsequentes.Usar um valor de estado do cliente duas vezes leva a choro e ranger de dentes.

Outras dicas

Eu me integrei ao meu projeto com parcimônia há alguns meses.Existem algumas etapas de inicialização necessárias para obter o cliente.

  {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),

Para obter mais contexto, você provavelmente pode dar uma olhada em um módulo do meu repositório git.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top