首页 > 其他分享 >dubbo中接口cache使用及原理

dubbo中接口cache使用及原理

时间:2023-12-01 22:56:06浏览次数:34  
标签:dubbo return cache 接口 invoker invocation public

服务提供者类增加注解@DubboService(cache = "true")

指定服务调用的缓存实现,包括:lru, threadlocal, jcache。

 提供者

@DubboService(token = "true", cache = "true")
public class CacheServiceImpl implements CacheService {

    private final AtomicInteger i = new AtomicInteger();

    public String findCache(String id) {
        return "request: " + id + ", response: " + i.getAndIncrement();
    }

}

消费者

@DubboReference(cache = "true")
private CacheService service;

public void findCache() {
    service.findCache("0");
}

dubbo缓存module

 <dependency>
      <groupId>org.apache.dubbo</groupId>
      <artifactId>dubbo-filter-cache</artifactId>
      <version>${project.parent.version}</version>
    </dependency>

核心缓存filter:org.apache.dubbo.cache.filter.CacheFilter

public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
    if (cacheFactory == null
            || ConfigUtils.isEmpty(invoker.getUrl().getMethodParameter(invocation.getMethodName(), CACHE_KEY))) {
        return invoker.invoke(invocation);
    }
    Cache cache = cacheFactory.getCache(invoker.getUrl(), invocation);
    if (cache == null) {
        return invoker.invoke(invocation);
    }
    String key = StringUtils.toArgumentString(invocation.getArguments());
    Object value = cache.get(key);
    return (value != null)
            ? onCacheValuePresent(invocation, value)
            : onCacheValueNotPresent(invoker, invocation, cache, key);
}

 

标签:dubbo,return,cache,接口,invoker,invocation,public
From: https://www.cnblogs.com/use-D/p/17859633.html

相关文章

  • Caffeine Cache缓存
    SpringBoot集成CaffeineCaffeine和SpringCache依赖,使用注解方法实现缓存依赖<!--提供SpringBoot中的缓存支持--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</......
  • Jmeter接口自动化测试 —— Jmeter下载安装及入门
    jmeter简介ApacheJMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。下载下载地址:ApacheJMeter-DownloadApacheJMeter安装由于Jmeter是基于Java的程序,所以我们要使用Jmeter就必须先安装Ja......
  • java使用http工具类调用第三方接口
    java使用http工具类调用第三方接口一、所需maven依赖:<!--json依赖--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version>......
  • Python接口自动化项目----Anan
    优点本效果展示仅是整体样式功能,更详细的使用方法和优点,需要参考使用手册。整体的优点包括:1.测试接口的统一管理2.支持多环境3.测试报告展示4.定时任务5.支持代码驱动6.便捷的交互式页面7.支持根据业务的定制化操作8.基于httprunner1.x,支持各种复杂情况下的接口测试,多依......
  • vue axios all 接口全部成功之后进行其它操作
    setSelf(){constarr:any=[]list?.forEach((item)=>{constobj={id:1}arr.push(obj)})arr.push()returnt......
  • 接口参数默认值的坑
    先看接口@GetMapping("/queryByPage/{pageNum}/{pageSize}")@ApiOperation("分页查询学生")publicResult<Page<Student>>queryByPage(@RequestParam(required=true,defaultValue="1")@PathVariableIntegerpageNum,......
  • 江科大STM32(3):定时器(4)定时器的编码器接口
    1.编码器接口简介EncoderInterface编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和......
  • SAP PO 接口配置1:连通WebService-通过PO调用第三方接口
    背景说明SAP通过PO中间件进行接口调用,调用外部接口。外部接口可以用任意方式生成,常见的REST类型接口即可,关于如何使用python生成接口,其他章节另述。本教程的前置条件,PO中已配置BusinessSystems,并与SAP环境连通。1.测试接口这里以常见的post接口做示例,如有其他类型接口,需......
  • Java函数式接口再理解
    Java函数式接口再理解前言这篇文章主要是我个人对函数式接口的再理解,若有理解偏差或考虑不周的地方,欢迎批评指出,共同进步!这里做下记录,以便日后遗忘查阅;目录目录Java函数式接口再理解前言目录一、什么是函数式接口①概述②一个标准的函数式接口③举例感受函数式接口的作......
  • java接入百度翻译接口简单实现中译英
    1.去官网开通标准版https://api.fanyi.baidu.com/access/0/1百度翻译开放平台(baidu.com)开通成功后,点击立即使用后的页面是这样子的  将APPID和密钥复制下来,待会连接需要使用到  2.下载java包百度翻译开放平台(baidu.com) 下载后,复制粘贴到自己的项目中......