Я пытаюсь подключить Kafka и создавать сообщения с использованием Erlang/ekaf.Ошибка при получении данных в Kafka с использованием Erlang/ekaf
Код является простым примером, описанным в README ekaf, но выйдет, когда вызывается application:start
.
Обратите внимание, что я использовал gen_icmp:ping
, чтобы убедиться, что сервер, на котором работает Kafka, доступен для этого аппарата.
Я также запускаю скрипт python для создания некоторого случайного сообщения для этой Kafka, и это было успешно, поэтому, скорее всего, я кое-что пропустил в своем коде Erlang. :)
Источник:
-module(kafka).
-compile(export_all).
run_test() ->
io:format("run_test: start.~n"),
pingKafka(),
try init_ekaf() of
_ -> io:format("run_test: ok~n")
catch
error:Msg -> io:format("run_test: error: ~p~n", [Msg]);
throw:Msg -> io:format("run_test: throw: ~p~n", [Msg]);
exit:Msg -> io:format("run_test: exit: ~p~n", [Msg])
end.
init_ekaf() ->
io:format("init_ekaf: start.~n"),
application:load(ekaf),
application:set_env(ekaf, ekaf_bootstrap_broker, {"kafka.dev", 9092}),
ok = application:start(ekaf),
io:format("init_ekaf: started.~n"),
Topic = <<"foobar">>,
ekaf:produce_sync(Topic, <<"some data">>),
io:format("init_ekaf: message sent.~n"),
ok.
pingKafka() ->
Res = gen_icmp:ping("kafka.dev"),
io:format("pingKafka: ~p.~n", [Res]),
ok.
Выход:
run_test: start.
pingKafka: [{ok,"kafka.dev",
{192,168,0,51},
{192,168,0,51},
{12343,0,64,130},
<<" !\"#$%&'()*+,-./:;<=>[email protected]">>}].
init_ekaf: start.
run_test: error: {badmatch,{error,{not_started,gproc}}}
run_test: end.