Как загрузить комиссионный клиент в Erlang - PullRequest
3 голосов
/ 30 апреля 2011

Я хочу использовать scribe для экспорта некоторых данных из приложения Erlang, но у меня проблема с запуском клиента Thrift. Я устанавливаю Thrift, в каталоге lib erlang. Я использую: thrift-0.6.1

Я нашел пример кода для подключения от Эрланга через комиссионные к писцу:

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

но erlang возвращает эту ошибку:

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

Когда я пытаюсь запустить application:start(thrift), на мгновение я вижу некоторое завершение кода для thrift*

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

и нет метода start_link.

Ответы [ 2 ]

5 голосов
/ 30 апреля 2011

Я думаю, что в эти дни вы хотите что-то вроде thrift_client_util:new(Host, Port, ProtoModule, Options)

, который в вашем случае будет:

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

И важно помнить, что Thrift API в erlang должен учитывать, что все вызовы возвращают вам новое значение состояния клиента, которое вы должны использовать для последующих вызовов. Двойное использование значения состояния клиента приводит к воплям и скрежету зубов.

1 голос
/ 30 апреля 2011

Пару месяцев назад я соединился с моим проектом.Есть несколько шагов инициализации, необходимых для получения клиента.


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

Для большего контекста вы, вероятно, можете взглянуть на модуль из моего репозитория git.

...