Question

Je souhaite utiliser scribe d'exporter des données à partir d'une application Erlang, mais j'ai un problème avec la gestion client Thrift. Installer Thrift, dans le répertoire lib Erlang. J'utilise: Thrift-0.6.1

J'ai trouvé quelques exemples de code pour se connecter à partir Erlang via Thrift scribe:

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

mais Erlang retourne cette erreur:

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

Quand je tente de lancer application:start(thrift), pour un instant, je vois une complétion de code pour thrift*

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

et il n'y a pas de méthode start_link.

Était-ce utile?

La solution

Je pense que ces jours-ci que vous voulez quelque chose comme thrift_client_util:new(Host, Port, ProtoModule, Options)

qui dans votre cas serait:

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

Et un point important à garder à l'esprit avec l'API Thrift dans Erlang est que tous les appels que vous retournent une nouvelle valeur d'état de client que vous devez utiliser pour les appels suivants. En utilisant une valeur d'état client deux fois conduit à des pleurs et des grincements de dents.

Autres conseils

Je suis Thrift intégré à mon projet quelques mois en arrière. Il y a quelques étapes d'initialisation requises pour obtenir le 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),

Pour plus de contexte, vous pouvez probablement jeter un oeil à un le module de mon repo git.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top