Hazelcast Jet-处理Redis流中的容错

时间:2019-11-13 08:24:27

标签: hazelcast-jet

我有一个部署有3个节点的Hazelcast Jet集群,几乎没有读写Redis Streams的作业。

到目前为止,Redis的流可以从特定位置读取,也可以从开始的位置或较新的位置读取。如果作业由于某种原因(错误)而重新启动,则必须从其离开的地方开始。

此外,我如何编码或配置我的作业,使其能够重新尝试处理失败的消息,例如在处理过程中发生了某些运行时异常,网络与其他Web服务或Redis群集断开连接。

1 个答案:

答案 0 :(得分:1)

您可以通过JobConfig

为Jet作业配置容错能力
JobConfig config = new JobConfig();
config.setProcessingGuarantee(EXACTLY_ONCE)
    .setSnapshotIntervalMillis(3000);
Job job = instance.newJob(p, config);

这将配置作业,以便每3秒拍摄一次快照。如果您的作业重新启动,则可能是由于Jet群集的缩小/放大或手动调用job.restart()导致的,源将从上次保存的快照继续。一些消息可以发出两次,接收器应处理该重复。

我们将lettuce客户端用于RedisSource,您可以通过RedisUri配置超时,如果断开连接,则lettuce客户端将尝试重新连接。但是处理填充过程中的任何失败都会使作业失败。

相关问题