以固定间隔从输入流中消耗消息

时间:2018-03-13 08:55:29

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

我正在使用流侦听器来使用来自amazon kinesis流的消息。

@StreamListener(Processor.Input)
public void receiveMessage(String message) {
  //process    
}
  1. 是否可以实现一个侦听器,它将每10分钟从输入流中获取一次所有消息
  2. 当有消费者群体时,它会如何表现。消费者组中的所有容器是否都有不同的消息列表。
  3. 我尝试使用@Poller,但它没有任何输入通道。

    对此的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

AWS Kinesis没有这样的Polling Consumer实现。 但是你可以用这样的组合模拟它:

listenerMode = batch

您将在@StreamListener中收到List<com.amazonaws.services.kinesis.model.Record>

的有效内容

recordsLimit默认为10000。我认为这应该足以尽可能地进行民意调查。

idleBetweenPolls = 600000 / 10 mins

您不会比此选项更早进入下一批。

不,该组中的每个消费者都会获得自己的列表。但这并不符合您对轮询所有内容的原始要求。因此,同一组中的所有其他消费者都会闲着 - 没有什么可以为他们进行投票!