Comment charger client Thrift dans Erlang
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
.
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.