在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个元素+ - 。有什么问题?
答案 0 :(得分:1)
这确实是一个问题,@ Stav Alfi。
在KinesisMessageChannelBinder
注入KinesisExtendedBindingProperties
后,我看到了适当的属性群。
因此配置应该是这样的:
spring:
cloud:
stream:
kinesis:
bindings:
input:
consumer:
idleBetweenPolls: 250
我会尽快解决上述问题。希望我们今天能够发布M2。
感谢您的耐心等待!
关于缓慢的消费速度:不要忘记你向Kinesis流发送消息的速度有多快,并且还要记住生产者和消费者之间真的有些延迟。换句话说,AWS Kinesis有一些合理的延迟,可以使记录可供使用。
有关详细信息,请参阅AWS FAQ:
您可以不断向数十万来源的Amazon Kinesis数据流添加各种类型的数据,例如点击流,应用程序日志和社交媒体。几秒钟内,您的Amazon Kinesis应用程序将可以从流中读取和处理数据。