【问题标题】:Does librdkafka c++ library have a mock server or broker?librdkafka c++ 库是否有模拟服务器或代理?
【发布时间】:2018-03-01 18:08:27
【问题描述】:

librdkafka c++ 库是否有用于单元测试的模拟服务器,不需要您启动 kafka 服务器?如果没有,那有没有简单易用的轻量级kafka服务器呢?

librdkafka 库中的示例和单元测试是否需要 kafka 服务器站起来才能运行?如果不是,它在使用什么?我看到它列出了 localhost:9092,它在启动时会启动自己的模拟代理吗?

谢谢!

【问题讨论】:

    标签: c++ unit-testing apache-kafka


    【解决方案1】:

    librdkafka 没有模拟代理,它依赖于连接到由至少 3 个代理组成的真实 Apache Kafka 集群。将 test.conf 配置文件传递给测试以指出引导代理地址等。

    为了简化这个过程,我编写了trivup 工具,它可以在本地机器上自动设置代理集群,配置为 SASL(PLAIN、SCRAM、Kerberos)、SSL 或任何需要测试的环境。还配置并启动了 Zookeeper 或 Kerberos KDC 等辅助组件。

    测试完成后,集群会被拆除并移除。

    安装 trivup

    $ virtualenv ~/yourPythonVirtualEnv/bin/activate
    $ source ~/yourPythonVirtualEnv/bin/activate
    $ git clone https://github.com/edenhill/trivup.git
    $ cd trivup
    $ python setup.py install
    

    启动集群并运行shell

    $ cd ~/librdkafka/tests
    $ ./interactive_broker_version.py 1.0.0
    (trivup-shell)$ echo $BROKERS
    (trivup-shell)$ make   # to run tests
    ...
    (trivup-shell)$ exit   # stop cluster 
    

    【讨论】:

      【解决方案2】:

      是的,从 v1.3.0 开始,librdkafka 具有模拟功能,但 api 是实验性的,可能会被删除。来自发行说明:

      '添加了实验性(可能会更改或删除)模拟代理,以使应用程序和 librdkafka 开发测试更容易'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多