【问题标题】:Reading only one message from the topic using REST Proxy使用 REST 代理从主题中仅读取一条消息
【发布时间】:2019-10-31 10:46:35
【问题描述】:

我通过 Rest Proxy(在 Docker 容器中)使用 Kafka 版本 2.2.0cp2。我需要消费者始终只阅读一条消息。

我在文件/etc/kafka/consumer.properties中设置值max.poll.records=1如下:

consumer.max.poll.records=1 或者:

max.poll.records=1

没有效果。

在其他配置中设置这个值也没有给出任何结果。

【问题讨论】:

    标签: apache-kafka kafka-consumer-api kafka-rest


    【解决方案1】:

    所以consumer.properties 不会从 REST 代理中读取

    假设消费者属性可以更改kafka-rest 容器 env-var 将是 KAFKA_REST_CONSUMER_MAX_POLL_RECORDS,但该设置仅控制代理服务器的内部轮询循环,而不是返回的数量数据到 HTTP 客户端...

    必须为 API 提供一个 limit 标志,但该标志不存在 - https://docs.confluent.io/current/kafka-rest/api.html#get--consumers-(string-group_name)-instances-(string-instance)-records

    【讨论】:

    • > 容器 env-var 将是 KAFKA_REST_CONSUMER_MAX_POLL_RECORDS 不幸的是,这也没有产生任何结果。也许这适用于某些图像?我正在使用这张图片:confluentinc / cp-enterprise-kafka: 5.2.1
    • 我提到的变量是针对 REST Proxy 容器的,而不是代理的
    【解决方案2】:

    我没有看到以下链接中提到的任何消费者投票设置

    https://docs.confluent.io/current/kafka-rest/config.html

    但如果您知道平均消息大小,您可以通过如下方式传递 max_bytes 来控制记录大小

    获取 /consumers/testgroup/instances/my_consumer/records?timeout=3000&max_bytes=300000 HTTP/1.1

    最大字节数:

    未编码的键和值的最大字节数应该 包含在响应中。这提供了近似控制 响应的大小和存储响应所需的内存量 解码响应。实际限制将是此设置的最小值 和服务器端配置consumer.request.max.bytes。默认 是无限的

    【讨论】:

    • 内存限制对我不起作用,在我的队列中,一条记录可能占用几千字节或高达一百兆字节或更多。因此,一次处理一条记录对我来说很重要。
    • @DanielGrave Kafka 默认将一条记录的最大大小限制为 1MB...如果您在一条消息中放入数百 MB,那么您的用例可能会有更好的模式
    猜你喜欢
    • 2019-12-04
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 2021-04-20
    相关资源
    最近更新 更多