我正在使用AWSKinesis 客户端库 https://github.com/awslabs/amazon-kinesis-client/blob/master/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/Worker.java.
我需要一种在部署期间关闭 Kinesis Worker 线程的方法,以便我在检查点停止而不是在中间停止processRecords()
.
我看到关闭布尔值存在于Worker.java
但它是私有的。
我需要的原因是检查点和幂等性对我来说至关重要,我不想在批次中间终止该进程。
[EDIT]
感谢@CaptainMurphy,我注意到Worker.java
暴露shutdown()
安全关闭worker和的方法LeaseCoordinator
。它不做的是调用shutdown()
任务在IRecordProcessor
。它突然终止IRecordProcessor
不用担心国家。
我确实理解 KCL 不能保证检查点之间的幂等性,开发人员应该使设计具有容错能力,但我认为IRecordProcessor
应先正确关闭LeaseCoordinator
不管怎样都会停止。
自版本以来1.7.1 https://github.com/awslabs/amazon-kinesis-client/releases/tag/v1.7.1(请参阅下面的注释)应用程序可以请求正常关闭,并且实现 IShutdownNotificationAware 的记录处理器将有机会在关闭之前进行检查点。
PS:Kinesis客户端之前版本1.7.4 https://github.com/awslabs/amazon-kinesis-client/releases/tag/v1.7.4包含阻止正确关闭的竞争条件。因此请使用 1.7.4 或更高版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)