【问题标题】:IdleBetween pools not pulling Messages as specifiedIdleBetween 池未按指定提取消息
【发布时间】:2019-04-27 06:39:32
【问题描述】:

我在批处理模式下使用消息。我想每 250 毫秒从流中提取 8 条消息。

spring:  
  cloud:
    stream:
      kinesis:
        bindings:
          input:
            consumer:
              listenerMode: batch
              idleBetweenPolls: 250
              recordsLimit: 8
      bindings:
        input:
          group: my-group
          destination: stream
          content-type: application/json

我已将大约 100 条消息推送到流中,并启动了消费者。

根据配置,我应该每 250 毫秒提取一次消息。但 轮询器不是每 250 毫秒拉一次消息。

@StreamListener(Sink.INPUT)
  public void receiveMessage(Message<List<byte[]>> messages) {
    log.info("Total received messages: " + messages.getPayload().size());
  }

2019-04-27 12:04:40.145 : Total received messages: 8
2019-04-27 12:04:41.604 : Total received messages: 8
2019-04-27 12:04:43.167 : Total received messages: 8
2019-04-27 12:04:44.618 : Total received messages: 8
2019-04-27 12:04:46.145 : Total received messages: 8
2019-04-27 12:04:47.775 : Total received messages: 8
2019-04-27 12:04:49.211 : Total received messages: 8
2019-04-27 12:04:50.756 : Total received messages: 8
2019-04-27 12:04:52.283 : Total received messages: 8
2019-04-27 12:04:53.817 : Total received messages: 8

我什至什么都不处理。它只是日志。

每条消息之间的时间超过 250 毫秒。我有什么遗漏吗?

【问题讨论】:

  • @Artem Bilan。你能帮忙吗?

标签: spring-cloud-stream spring-cloud-aws spring-integration-aws


【解决方案1】:

250 ms 对于实际用例没有意义。也许您可以将间隔增加到 5 秒并尝试一下。

【讨论】:

  • 我认为真正的问题是 AWS Kinesis 不能立即为消费者提供已发送的记录。我现在找不到关于这件事的文档,但我在互联网上肯定有一些关于这件事的文档。
猜你喜欢
  • 2015-02-14
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 2016-03-26
  • 2014-03-20
  • 2023-04-10
相关资源
最近更新 更多