Elixir Kafka 客户端 Elsa

Elixir Kafka client Elsa

我正在尝试在 Kafka 中动态创建主题,但不幸的是出现了一些错误。这是我的代码

  def hello_from_elsa do
    topic = "producer-manager-test"
    connection = :conn

    Elsa.Supervisor.start_link(endpoints: @endpoints,
         connection: connection)

    Elsa.create_topic(@endpoints, topic)
  end

据我所知,我可以连接到代理本身,但是当执行 crete 主题行时,我收到此错误:

(MatchError) no match of right hand side value: false
    (kafka_protocol) src/kpro_brokers.erl:240: anonymous fn/1 in :kpro_brokers.discover_controller/2
    (kafka_protocol) src/kpro_lib.erl:376: :kpro_lib.do_ok_pipe/2
    (kafka_protocol) src/kpro_lib.erl:281: anonymous fn/3 in :kpro_lib.with_timeout/2

我不确定在创建主题之前是否错过了一些额外的步骤。但我想应该没问题,因为我启动了主管及其 运行 :/

很难说,因为错误是来自底层的 Kafka 协议,而不是直接来自 Elsa,但看起来似乎找不到任何 Kafka 集群控制器。

主题管理必须通过控制器节点完成,因此 with_connection 函数 create_topic 包装显式传递原子 :controller 以建立连接,无论出于何种原因,可能是特定的对于您的集群,该函数无法成功找到控制器。

您要针对哪种类型的集群进行测试?如果您使用 divodivo_kafka 库,您可以在本地主机上使用 Docker 建立单节点 kafka 集群进行测试,它应该按预期工作。