如何使用 librdkafka 设置 Kafka 消息的最大大小
Posted
技术标签:
【中文标题】如何使用 librdkafka 设置 Kafka 消息的最大大小【英文标题】:How to set the max size of a Kafka message using librdkafka 【发布时间】:2020-06-29 13:34:44 【问题描述】:我正在尝试使用 Kafka 发送约 10Mb 的消息。我知道它的默认大小是 1Mb,但这是一个硬限制吗? librdkafka 可以支持 >10Mb 吗?如何设置?
【问题讨论】:
【参考方案1】:你需要配置主题max.message.bytes
(见https://kafka.apache.org/22/documentation.html#topicconfigs),并配置生产者message.max.bytes
(见https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md)。
请为协议开销留出一些额外空间(至少约 500 字节)。
【讨论】:
谢谢您的回复。我尝试这样做,但我不再收到指出消息太大的错误。但它现在似乎挂了。所以我所做的是通过您回复中的脚本修改了先前存在的主题,为了安全起见,我还创建了一个全新的主题。两者都使用 15Mb 大小(为了更加安全)。现在,当我修改代码以调用最大更改时,它不再出错,但超过 1Mb 的所有内容都会停止。生产者在自己的线程上运行,所以我仍然可以做事并尝试发送更多消息。但没有人通过 一点侦查表明我可以成功发送 9998999 字节(9.9 Mb,而且速度也很快)。但除此之外,下面的评论只是挂起并且不再产生@Edenhill 在生产者上配置debug=msg,protocol
重现此问题,然后在此处打开问题:github.com/edenhill/librdkafka/issues/new 确保您使用的是最新版本的 librdkafka(v1.3.0 或 v1.4.0-RC4)
嘿@Edenhill,不熟悉你的调试内容,所以当我运行它时,我收到了一堆:当前消息集中没有更多空间,但是当我用谷歌搜索时,我得到的只是参考你的 github ......所以也许我没有使用最新的,我想。我使用 apt 从 repo 安装,尽管你的源代码从未直接编译过。做得好并链接,解决了这一切。显然我没有使用最新的。你的名字也经常出现,所以我认为你是“那个人”。您的代码浏览起来很愉快,并且文档是最好的。谢谢!
@Edenhill “请为协议开销留出一些额外空间(至少约 500 字节)。” -> 这很有用。我想知道为什么将所有限制设置为 1 MB 我无法发送大小为 999908 字节的消息,但 999907 没问题 :)以上是关于如何使用 librdkafka 设置 Kafka 消息的最大大小的主要内容,如果未能解决你的问题,请参考以下文章