分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

微服务入门06AspectCore ?Aop

发布时间:2023-09-06 02:15责任编辑:林大明关键词:暂无标签

基本的使用方式可以去GitHub上看,这里只介绍如和与polly联合起来使用,要达到这样一个目的

HelloAsync有可能会抛异常,若执行失败就降级执行HelloFallbackAsync 方法

注意 方法标注[HystrixCommand]并且是 virtual 标注
创建拦截器

[AttributeUsage(AttributeTargets.Method)] ???public class HystrixCommandAttribute:AbstractInterceptorAttribute ???{ ???????private string fallbackMethod; ???????public HystrixCommandAttribute(string fallbackMethod) ???????{ ???????????this.fallbackMethod = fallbackMethod; ???????} ???????public override async Task Invoke(AspectContext context, AspectDelegate next) ???????{ ???????????try ???????????{ ???????????????await next(context); ???????????} ???????????catch (Exception) ???????????{ ???????????????Console.WriteLine("出错"); ???????????????//1获得降级方法 ??????????????var fallback = context.Implementation.GetType().GetMethod(fallbackMethod); ???????????????//2调用降级方法 ???????????????var returnVal =fallback.Invoke(context.Implementation, context.Parameters); ???????????????//3把降级方法的返回直返回 ???????????????context.ReturnValue = returnVal; ???????????????//throw; ???????????} ???????} ???}

编写需要被代理拦截的类

public class Person{ ????????[HystrixCommand(nameof(HelloFallbackAsync))] ???????public virtual async Task<string> HelloAsync(string name){ ???????????Console.WriteLine("name" +name); ???????????throw new Exception("i am ex"); ???????????return "ok"; ???????} ???????public virtual async Task<string> HelloFallbackAsync(string name){ ???????????Console.WriteLine("执行失败" +name); ???????????return "fail"; ???????} ???}

创建

 ???ProxyGeneratorBuilder proxyGeneratorBuilder = new ProxyGeneratorBuilder(); ???using (IProxyGenerator proxyGenerator = proxyGeneratorBuilder.Build()) ???{ ???????var p = proxyGenerator.CreateClassProxy<Person>(); ???????var re = p.HelloAsync("rup").Result; ???????Console.WriteLine(re); ???}

微服务入门06AspectCore ?Aop

原文地址:https://www.cnblogs.com/Amayer/p/9690447.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved