问题标签 [librdkafka]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - LibRdKafka:commited_offset 始终为 -1001
当我运行我的消费者组时,我总是有这样的统计数据:
如您所见,所有偏移量都设置为 -1001:
这是我的设置(也适用于 default_topic):
有时,即使主题中有很多消息,消费者组也无法获取它们。任何想法?
apache-kafka - librdkafka producer 如何了解 Kafka 中的新主题分区
我正在运行 rdkafka_simple_producer.c 来向 Kafka 集群生成消息。我有一个主题和 30 个分区。使用默认的循环分区程序。当生产者工作并向 Kafka 生成消息时,我向 Kafka 添加了更多分区
我希望制作人意识到这一变化并最终开始制作所有 40 个主题。但是,最后我只看到原始 30 个分区产生了数据。
在测试中,生产者跑了 2 分钟。
我需要在 simple_producer 中添加任何函数调用还是我需要考虑的 Kafka 参数?
提前致谢!
apache-kafka - Python librdkafka producer 针对本地 Apache Kafka Producer 执行
我正在针对 Python 的 confluent-kafka 测试具有本机 java 实现的 Apache Kafka Producer,以查看哪个具有最大吞吐量。
我正在使用 docker-compose 部署一个包含 3 个 Kafka 代理和 3 个 zookeeper 实例的 Kafka 集群。我的 docker 撰写文件:https ://paste.fedoraproject.org/paste/bn7rr2~YRuIihZ06O3Q6vw/raw
这是一个非常简单的代码,其中大部分是 Python confluent-kafka 的默认选项,以及 java producer 中的一些配置更改以匹配 confluent-kafka 的配置。
蟒蛇代码:
Java 实现。配置与 librdkafka 中的配置相同。按照 Edenhill 的建议更改了 linger.ms 和回调。
基准测试结果(根据 Edenhill 的建议进行更改后编辑)
Acks = 0,消息:1000000
爪哇:12.066
Python:9.608 秒
Acks:全部,消息:1000000
Java:45.763 11.917 秒
Python:14.3029 秒
即使在进行了我能想到的所有更改以及 Edenhill 在下面的评论中建议的更改之后,Java 实现的性能与 Python 实现相同。
关于 Kafka 在 Python 中的性能有各种基准测试,但我找不到任何将 librdkafka 或 python Kafka 与 Apache Kafka 进行比较的地方。
我有两个问题:
这个测试是否足以得出结论,默认配置和大小为 1Kb librdkafka 的消息更快?
有没有人有将 librdkafka 与 confluent-kafka 进行基准测试的经验或来源(博客、文档等)?
apache-kafka - 没有消息时从 Kafka 消费者返回
我想使用Confluent dotnet client在应用程序启动中处理一个主题。假设以下示例:
当 Kafka 中没有新消息时,c.Consume 将被阻塞。因为我想用它来启动应用程序(比如缓存预热),所以当我发现没有新消息时,我想继续我的代码。
我知道设置超时存在过载,c.Consume(timeout)
但这种方法的问题是,如果您的主题中有一条消息,并且阅读消息的持续时间超过了您的超时,您会收到不希望的空输出。
apache-kafka - 当消费者从多个分区读取数据时,某些分区似乎优先
我有一项使用 librdkafka 从 Kafka 主题读取的服务。我注意到,如果消费者关闭一段时间,一些日志条目会在 kafka 中建立(这完全没问题,也是意料之中的)
奇怪的是,有时当我启动消费者备份并按分区查看挂起的日志条目时,分配给同一消费者的分区似乎以不同的速度恢复。
例如,假设我有一个消费者 X,它声称分区 30 到 50。当消费者启动时,每个有 10,000 个待处理条目。
我看到的是 30-40 的未决条目呈下降趋势,而 41-50 的未决条目增长。当 30-40 最终达到零(或足够接近零)时,41-50 开始呈下降趋势。
为什么会这样?它是客户端功能还是服务器功能?
bazel - bazel rules_go:将 go 二进制文件链接到工作区中另一个目标生成的静态 c++ 库(.a 文件)
我在我的 go 二进制文件中使用 confluent-kafka-go 库,并且该库需要与 librdkafka 链接。我项目中的其他目标使用 librdkakfa,因此我使用 rules_foreign_cc 的 cmake_external 规则生成了静态 librdkafka.a 和 librdkafka++.a:
这会产生 librdkafka 库和头文件就好了:
现在我试图在我的 go_binary 规则中链接 librdkafka.a (我不需要 librdkafka++.a 文件,只需要 c 版本):
但是当我运行时,我得到了数百个未定义的 rdkafka 引用bazel build //foo:foo
(我的 go 二进制文件)
node.js - node-rdkafka 没有安装在本地 Windows 系统以及远程 linux 服务器中
node-rdkafka
需要Python 2.7作为依赖项之一,并且它已经在系统中可用,还为其设置了路径。根据我的理解,
仍然npm
会抛出与堆栈跟踪相关的错误。librdkafka
请在下面找到在 windows 中安装 node-rdkafka 时引发的错误。
node-rdkafka@2.6.1 安装 C:\Users\mrdeo\node_modules\node-rdkafka
node-gyp 重建C:\Users\mrdeo\node_modules\node-rdkafka>如果未定义 npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\....\node_modules \node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
构建项目在这个解决方案中,一次一个。要启用并行构建,请添加“/m”开关。
从 nuget
cl 获取 librdkafka:命令行警告 D9025:使用“/GR”覆盖“/GR-”
[C:\Users\mrdeo\node_modules\node-rdkafka\build\node-libr dkafka.vcxproj]
cl:命令行警告D9025:用“/GR”覆盖“/GR-”
[C:
binding.cc
cl:命令行警告 D9025:用“/GR”覆盖“/GR-”
[C:\Users\mrdeo\node_modules\node-rdkafka\build\node-libr dkafka.vcxproj]
cl:命令行警告 D9025 : 用 '/GR' 覆盖 '/GR-'
[C:\Users\mrdeo\node_modules\node-rdkafka\build\node-libr dkafka.vcxproj]
callbacks.cc
common.cc
cl : 命令行警告 D9025: overriding ' /GR-' 和 '/GR'
[C:\Users\mrdeo\node_modules\node-rdkafka\build\node-libr dkafka.vcxproj]
config.cc
..\src\callbacks.cc(103):警告 C4996: 'Nan::Callback::Call': 被宣布弃用 [C:\Users\mrdeo\node_modules\no de-rdkafka\build\node-librdkafka.vcxproj]
C:\Users\mrdeo\node_modules\nan\nan.h(1740):注意:请参阅 'Nan::Callback::Call' 的声明
..\src\callbacks.cc(275):错误 C2589:'(' : '::' 右侧的非法令牌 [C:\Users\mrdeo\node_modules\node-rdkaf ka\build\node-librdkafka.vcxproj]
..\src\callbacks.cc(275):错误 C2059:语法错误:'::' [C:\Users\mrdeo\node_modules\node-rdkafka\build\node-librdkaf ka.vcxproj]
..\src\callbacks.cc(575): 警告 C4996: 'Nan::Callback: :Call': 被声明为弃用 [C:\Users\mrdeo\node_modules\no de-rdkafka\build\node-librdkafka.vcxproj]
C:\Users\mrdeo\node_modules\nan\nan.h(1740):注意:见'Nan::Callback::Call'的声明
..\src\callbacks.cc(612): 警告 C4996: 'Nan::Callback::operator ()': 被宣布弃用 [C:\Users\mrdeo\node_modules\node-rdkafka\build\node-librdkafka .vcxproj]
C:\Users\mrdeo\node_modules\nan\nan.h(1638):注意:见 'Nan::Callback::operator ()'
connection.cc
errors.cc
kafka-consumer.cc
producer 的声明。 cc
C:\Users\mrdeo\node_modules\node-rdkafka\src/workers.h(42): 警告 C4996: 'Nan::Callback::Call': was declared deprecated (compile source file ..\src\connection .cc)
[C:\Users\mrdeo\node_modules\node-rdkafka\build\node-librdkafka.vcxproj ]
C:\Users\mrdeo\node_modules\nan\nan.h(1740):注意:参见“Nan”的声明::Callback::Call' (编译源文件..
\src\connection.cc)
C:\Users\mrdeo\node_modules\node-rdkafka\src/workers.h(42): 警告 C4996: 'Nan::Callback::Call': was declared deprecated (编译源文件..\src\kafka-consumer.cc)
[C:\Users\mrdeo\node_modules\node-rdkafka\build\node-librdkafka.vcx proj]
C:\Users\mrdeo\node_modules\nan\nan.h(1740 ): 注意:见 'Nan::Callback::Call' 的声明(编译源文件..
\src\kafka-consumer.cc)
C:\Users\mrdeo\node_modules\node-rdkafka\src/workers.h( 42): 警告 C4996: 'Nan::Callback::Call': 被声明为弃用 (编译源文件 ..\src\producer.cc) [C:\Users\mrdeo\node_modules\node-rdkafka\build\node -librdkafka.vcxproj]
C:\Users\mrdeo\node_modules\nan\nan.h(1740):注意:见“Nan::Callback::Call”的声明(编译源文件..
\src\producer.cc)
..\src\ kafka-consumer.cc(560): 警告 C4996: 'v8::Value::ToObject': 被宣布弃用 [C:\Users\mrdeo\node_modul es\node-rdkafka\build\node-librdkafka.vcxproj]
c: \users\mrdeo.node-gyp\10.15.3\include\node\v8.h(10046):注意:见 'v8::Value::ToObject' 的声明 ..\src\kafka-consumer.cc(567 ): 警告 C4996: 'v8::Value::ToObject': 被声明为弃用 [C:\Users\mrdeo\node_modul es\node-rdkafka\build\node-librdkafka.vcxproj]
c:\users\mrdeo.node-gyp\10.15.3\include\node\v8.h(10046): 注意:见 'v8::Value::ToObject' 的声明 ..\src\producer.cc(115 ): 警告 C4996: 'v8::Value::ToObject': 被宣布弃用 [C:\Users\mrdeo\node_modules\nod e-rdkafka\build\node-librdkafka.vcxproj]
c:\users\mrdeo.node- gyp\10.15.3\include\node\v8.h(10046): 注意: 见 'v8::Value::ToObject'
topic.cc的声明
..\src\producer.cc(122): 警告 C4996: ' v8::Value::ToObject': 被声明为弃用 [C:\Users\mrdeo\node_modules\nod e-rdkafka\build\node-librdkafka.vcxproj]
c:\users\mrdeo.node-gyp\10.15.3\include\node\v8.h(10046): 注意:见 'v8::Value::ToObject' 的声明 ..\src\producer.cc(373 ): 警告 C4996: 'v8::Value::ToObject': 被宣布弃用 [C:\Users\mrdeo\node_modules\nod e-rdkafka\build\node-librdkafka.vcxproj]
c:\users\mrdeo.node- gyp\10.15.3\include\node\v8.h(10046): 注意: 见 'v8::Value::ToObject' 的声明 ..\src\producer.cc(396): 警告 C4996: 'v8:: Value::ToObject': 被声明为 deprecatedworkers.cc [C:\Users\mrdeo\node_m odules\node-rdkafka\build\node-librdkafka.vcxproj]c:\users\mrdeo.node-gyp\10.15.3\include\node\v8.h(10046): 注意:见 'v8::Value::ToObject' gyp
ERR 的声明!构建错误
gyp ERR!堆栈错误:C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe
退出代码失败:1
gyp ERR!堆栈在 ChildProcess.onExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\build.js:262:23) gyp
ERR!ChildProcess.emit (events.js:189:13) 的堆栈 gyp
ERR!堆栈在 Process.ChildProcess._handle.onexit (internal/child_process.js:248:12) gyp
ERR!系统 Windows_NT 10.0.15063 gyp
错误!命令“C:\Program Files\nodejs\node.exe”“C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js”“重建”gyp
错误!cwd C:\Users\mrdeo\node_modules\node-rdkafka
吉普错误!节点 -v v10.15.3 gyp
错误!节点-gyp -v v3.8.0 gyp
错误!不行
npm WARN commons-example@0.0.1 没有存储库字段。
npm 错误!代码 ELIFECYCLE
npm 错误!errno 1
npm 错误!node-rdkafka@2.6.1 安装:node-gyp rebuild
npm ERR!退出状态 1
npm ERR!
npm 错误!在 node-rdkafka@2.6.1 安装脚本中失败。
npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。
c - librdkafka 消费者和 ssl 配置
我使用 librdkafka 作为客户端消费者,并且我已经为代理配置了代理和客户端以支持 SSL:
在客户端我使用这个配置:
我收到了这个错误:
有关更多信息,我同时有另一个使用相同证书和密钥的 python kafka 客户端,它工作正常。我将非常感谢任何帮助。
go - Kafka 消费者在超过 max.poll.interval.ms 后卡住了
当消费者在 5 分钟内没有收到消息(默认值为 max.poll.interval.ms 300000ms)时,消费者会在不退出程序的情况下停止。消费者进程挂起并且不再消费任何消息。
记录以下错误消息
我看到这ErrMaxPollExceeded
是在 confluent-kafka-go 中定义的,但无法找到它在哪里被提出。
如果出现任何此类错误,为什么程序不退出?
- 卡夫卡 v1.1.0
- librdkafka v1.0.0
- confluent-kafka-go (主)
用于 kafka.Consumer 的配置