在我的spring boot(1.5.7)应用程序中,我正在使用骆驼运动学组件从运动学流中读取数据。我已将迭代器类型设置为“最新”,如下所示
@Override
public void configure() throws Exception {
from("aws-kinesis://"+stream+"?amazonKinesisClient=#awsClient&iteratorType="LATEST")
.bean(Settlement.class, "transform")
.to("log:out");
}
虽然从运动学流中连续读取,但是没有问题。但是,当由于处理过程中的错误而在处理消息时有一些延迟,并且该延迟间隔超过5分钟时,我将收到ExpiredIteratorException错误,如下所示
om.amazonaws.services.kinesis.model.ExpiredIteratorException: Iterator expired. The iterator was created at time Mon Nov 27 15:30:29 UTC 2017 while right now it is Mon Nov 27 15:36:13 UTC 2017 which is further in the future than the tolerated delay of 300000 milliseconds. (Service: AmazonKinesis; Status Code: 400; Error Code: ExpiredIteratorException; Request ID: c655b6d8-58f4-c087-94c3-85f5e7cfdd03)
我已经尝试在骆驼版本2.20.1和2.20.0中使用它。有什么方法可以刷新迭代器吗?或任何其他更好的解决方案来克服此问题,这样我就可以阅读流中的下一条消息。
您可以使用subscribe_to_shard
提供ConsumerARN
,ShardId
,position
,sequence number
作为参数,以在迭代器在300000
毫秒内到期时再次重新连接至分片。