<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.remoting.RemoteAccessException;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.retry.annotation.Retryable;
@Configuration
@EnableRetry
public class Application {
}
import java.time.LocalTime;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.remoting.RemoteAccessException;
import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Recover;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
@Service
public class RemoteService {
private final static Logger logger = LoggerFactory.getLogger(RemoteService.class);
@Retryable(value = { RemoteAccessException.class }, maxAttempts = 3, backoff = @Backoff(delay = 5000l, multiplier = 1))
public int call() throws Exception {
logger.info(LocalTime.now()+" do something...");
// throw new RemoteAccessException("RPC调用异常");
throw new RuntimeException("run errer");
}
@Recover
public int recover(RemoteAccessException e) {
logger.info("================10=========================="+e.getMessage());
return 10;
}
@Recover
public int recover(RuntimeException e) {
logger.info("============12=============================="+e.getMessage());
return 12;
}
@Recover
public int recover(Exception e) {
logger.info("============11=============================="+e.getMessage());
return 11;
}
}
@Retryable注解
被注解的方法发生异常时会重试
value:指定发生的异常进行重试
include:和value一样,默认空,当exclude也为空时,所有异常都重试
exclude:指定异常不重试,默认空,当include也为空时,所有异常都重试
maxAttemps:重试次数,默认3
backoff:重试补偿机制,默认没有
@Backoff注解
delay:指定延迟后重试
multiplier:指定延迟的倍数,比如delay=5000l,multiplier=2时,第一次重试为5秒后,第二次为10秒,第三次为20秒
@Recover
当重试到达指定次数时,被注解的方法将被回调,可以在该方法中进行日志处理。需要注意的是发生的异常和入参类型一致时才会回调
分享到:
相关推荐
其核心特性包括分步处理、跳过错误、重试机制、并行处理等,使得开发者能够处理复杂的数据处理任务。 整合Spring Boot和Spring Batch,我们可以遵循以下步骤: 1. **添加依赖**:在`build.gradle`或`pom.xml`文件...
Spring Boot 注解 重试
该源码对应个人博客【Spring Boot集成 Spring Retry 实现容错重试机制】配套教程,地址:https://blog.csdn.net/lhmyy521125/article/details/139661753 小伙伴可以自行下载学习!不需要积分!不需要积分!不需要...
4. **死信交换机(Dead Letter Exchange, DLE)**:死信交换机是处理无法投递或者超过最大重试次数的消息的地方。当消息成为死信时,它们会被转发到指定的死信交换机,从而可以进行进一步的处理,如日志记录或分析。...
在带你快速学会 MQ 消息的发送与消费的同时,我还想告诉你 MQ 还有集群消费、广播消费、顺序消息、定时消息、事务消息、消费重试等等特性。 在带你快速学会 Job 任务的编写的同时,我还想告诉你还有 Quartz 单体、...
本文将深入探讨两个常用的重试框架:Spring Retry和Guava Retry,并通过一个名为`retry-starter`的Spring Boot项目实例,来解析它们的使用方式以及差异。 首先,我们来看Spring Retry。Spring Retry是Spring框架的...
本文将详细探讨如何在 Spring Boot 应用中基于 Spring Retry 实现重试机制,以及如何将其应用于支付回调和自定义重试场景。 首先,让我们了解 Spring Retry 的核心概念。Spring Retry 提供了一个 `@Retryable` 注解...
在实际项目中,你可能还需要配置负载均衡策略、超时时间、重试次数等高级特性,以适应不同的业务需求。 在分布式开发中,Spring Boot Dubbo整合的优势在于能够快速构建微服务架构,提供高可用、高性能的服务。同时...
为了解决上面这样的问题,本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又...
主要介绍了Spring boot使用spring retry重试机制的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
9. **错误处理和重试机制**:考虑到网络的不可靠性,需要设计错误处理和重试机制,比如消息发送失败时的自动重发,或者离线用户上线后的消息推送。 10. **性能优化**:随着用户数量的增长,优化WebSocket服务以处理...
2. SpringRetry实现重试机制,常与RestTemplate配合使用。 3. Elasticsearch实现分布式搜索和分析引擎功能。 4. OAuth2实现OAuth2认证机制。 5. Stream学习JDK8的Stream用法。 6. CAS实现CAS单点登录服务端和客户端...
Spring Boot、Spring Cloud和Eureka是Java开发领域中用于构建微服务架构的...对于复杂场景,还需要设计合理的服务治理策略,如熔断、降级、超时和重试等。通过这些技术,我们可以构建出高可用、高扩展性的微服务系统。
Spring Boot之所以被称为“重”,是因为它包含了大量内建功能,如自动配置、健康检查、内嵌服务器等,这些都可能导致较高的内存占用。 Spring Cloud作为基于Spring Boot的微服务解决方案,集成了许多组件,如服务...
此外,还可以通过调整配置参数,如批处理大小、重试策略等,优化性能和可靠性。 在这个`train-kafka`压缩包中,可能包含了一些示例代码或教程,帮助你更好地理解和实践这些知识点。如果你遇到任何问题,可以查阅...
3. 任务重试机制支持任务的重试机制,确保任务在失败后能够自动重试,直到达到最大重试次数。 4. 线程池管理系统内置线程池管理功能,能够动态调整线程池大小,确保任务的高效执行。 5. 任务处理器管理通过任务...
8. **事务和持久化**:Spring Boot和ActiveMQ支持事务性的消息传递,确保消息在处理失败时能够重试。同时,ActiveMQ提供了消息持久化,即使在服务器重启后也能保证消息不丢失。 9. **测试与监控**:可以使用Spring ...
接下来,为了让重试机制生效,需要在Spring Boot的主配置类上使用`@SpringRetry`注解。这表明我们要启用基于AOP的重试机制。 然后,我们创建一个业务类`RetryService`,在这个类中注入`RestTemplate`。`...
队列任务分发基于队列分发任务,支持错误重试和服务端动态配置。 RPC调用支持RPC风格调用,提供错误重试和服务端动态配置。 任务监控与报警基于InfluxDB的任务运维监控和报警设置。 主要特性 1. 完全分布式支持...