使用者在Windows 7,Java 8上运行。
消费者在1-5秒内阅读了1次按摩。我的设置有什么问题?
消费者:
@EnableBinding({Sink.class})
@SpringBootApplication
public class SpringCloudStreamKinesisConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudStreamKinesisConsumerApplication.class, args);
}
@StreamListener(Sink.INPUT)
public void logger(String payload) {
System.out.println("consumer received: " + payload);
}
}
消费者application.yml:
spring:
cloud:
stream:
bindings:
input:
destination: test_stream
content-type: application/json
consumer:
idleBetweenPolls: 250
消费者项目是同一项目中的一个模块,该模块继承以下pom:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-kinesis</artifactId>
<version>1.0.0.M1</version>
</dependency>
Kinesis联编程序忽略以下设置:
我在调试时手动更改了此参数,但使用者在10秒内收到了1-2个元素。问题是什么?
最佳答案
@Stav Alfi,那确实是个问题。
在为KinesisMessageChannelBinder
注入修复KinesisExtendedBindingProperties
之后,我看到了正确的属性填充。
因此,配置应如下所示:
spring:
cloud:
stream:
kinesis:
bindings:
input:
consumer:
idleBetweenPolls: 250
我将尽快解决该问题。希望我们今天发布M2。
感谢您的耐心等待!
关于缓慢的消费速度:不要忘记将消息发送到Kinesis流的速度,还要牢记生产者和消费者之间确实存在一些延迟。换句话说,AWS Kinesis在合理的延迟时间内无法使用记录。
有关更多信息,请参见AWS FAQ:
您可以将数十种来源的各种类型的数据(例如点击流,应用程序日志和社交媒体)连续添加到Amazon Kinesis数据流。在几秒钟内,数据将可供您的Amazon Kinesis应用程序读取并从流中进行处理。