您现在的位置是:主页 > 数据库技术 > 数据库技术

Spring Cloud中Hystrix缓存与合并请求的示例分析

IDCBT2021-12-25服务器技术人已围观

简介小编给大家分享一下Spring Cloud中Hystrix缓存与合并请求的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们

小编给大家分享一下Spring Cloud中Hystrix缓存与合并请求的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

缓存与合并请求缓存注解

        在6.3章节中,讲述了Hystrix的缓存功能,在Spring Cloud中,同样支持使用缓存,并且可以通过注解来实现。根据前面章节可知,缓存与合并请求功能,需要先初始化请求上下文才能实现。新建一个javax.servlet.Filter,用于创建与销毁Hystrix的请求上下文,请见代码清单6-9。

        代码清单6-19:

        codes\06\6.4\spring-hystrix-invoker\src\main\java\org\crazyit\cloud\HystrixFilter.java

@WebFilter(urlPatterns = "/*", filterName = "hystrixFilter")
public class HystrixFilter implements Filter {

    public void init(FilterConfig filterConfig) throws ServletException {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HystrixRequestContext context = HystrixRequestContext
                .initializeContext();
        try {
            chain.doFilter(request, response);
        } finally {
            context.shutdown();
        }
    }
    public void destroy() {
    }
}

        编写服务方法,使用@CacheResult注解进行修饰,请见代码清单6-20。

        代码清单6-20:CacheService.java

@Component
public class CacheService {

    @CacheResult
    @HystrixCommand
    public Person getPerson(Integer id) {
        System.out.println("执行 getPerson 方法");
        Person p = new Person();
        p.setId(id);
        p.setName("angus");
        return p;
    }
}

标签:

很赞哦! ()

本栏推荐