要求:
在我的项目中(在分布式环境中运行),我们要求在固定时间安排作业,初始延迟为1分钟,如果作业执行失败,它将重试,并且可以在2分钟内进行10次最大重试次数每个之间的延迟。
我们可以实现相同的工具:
我可以用spring-retry
实现所需的相同功能。但是,有多个容器可用(分布式环境)。 Rabbit-MQ
,Amazon-sqs
,Redis-quartz
等工具支持此功能。但我不确定哪个更适合springboot。
需要考虑的因素:
以下是选择正确工具时需要考虑的事项:
分布式环境 一致性 容错 易于配置 异步处理
题
基本上我正在寻找类似于Resqueue和sidekiq ruby实现的东西,相当于Java(springBoot)。有谁在他们的应用程序中实现了相同的功能?如果是这样,那么优点和缺点是什么是更好的选择/方式。欢迎提出建议。
您可以使用Spring的RetryTemplate
,它易于配置。
你可以在你的情况下使用带有SimpleRetryPolicy
的FixedBackOffPolicy
。可以根据您的要求在backOffPeriod
中使用SimpleRetryPolicy
属性配置最大重试次数(在您的情况下为2分钟)。
这种重试机制很容易插入Spring Boot项目。