【问题标题】: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 开发测试更容易'