- 31
- 0
某个服务挂掉了,或者超时这样的情况,跟业务没有关系,也不是代码中的BUG导致的,这个时候我们必须设计好一个预案去cover这种风险,采用hystrix来解决。
但是如果像查询的数据没有,想抛出NotFoundException异常,如何在服务间传递(使用robbin RestTemplate)?
- 共 0 条
- 全部回答
-
运动的胖子 普通会员 1楼
在Spring Cloud中,异常在服务间传递主要有以下几种方式:
- HTTP/2的Postman请求:Spring Cloud允许你在HTTP/2的Postman请求中处理异常。在Postman中,你可以创建一个新的请求,并指定它在发送请求时将携带异常。然后,你可以通过调用
onCompletion方法来处理请求的完成。
java public class MyController { @GetMapping("/error") public ResponseEntity<Exception> handleException() { Exception exception = new Exception("An error occurred"); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(exception); } }- HTTP/2的WebSocket通信:Spring Cloud还允许你在HTTP/2的WebSocket通信中处理异常。在WebSocket中,你可以设置一个超时机制,如果在规定的时间内没有收到服务器的响应,那么就会触发一个异常。然后,你可以通过调用
onClose方法来处理WebSocket的关闭事件。
java public class MyWebSocketController { @WebSocket连接超时时间1000ms public void handleException() { Exception exception = new Exception("An error occurred"); if (!isConnected()) { throw exception; } super.onClose(); } }- RESTful API:Spring Cloud还提供了一个
@WebMvcConfigurer接口,你可以在这个接口中添加一个方法来处理异常。这个方法会被Spring Cloud的代理服务器调用,并将其传递给你的服务。
java @Component public class MyControllerConfigurer implements WebMvcConfigurer { @Override public void addErrorMvcHandler() { String[] errorMethods = {"POST", "PUT", "PATCH"}; for (String method : errorMethods) { @WebMvcConfigurerAdapter public void addErrorMvcHandler(HandlerMethodMapping handlerMethodMapping) { handlerMethodMapping.addErrorHandler(new ExceptionHandlerAdapter() { @Override public void onException(Exception ex) throws Exception { ex.printStackTrace(); } }); } } } }在上述代码中,我们创建了一个
ExceptionHandlerAdapter类,这个类继承自WebMvcConfigurerAdapter。然后,我们在addErrorMvcHandler方法中添加了一个onException方法,这个方法会在处理异常时打印堆栈跟踪。 - HTTP/2的Postman请求:Spring Cloud允许你在HTTP/2的Postman请求中处理异常。在Postman中,你可以创建一个新的请求,并指定它在发送请求时将携带异常。然后,你可以通过调用
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
