博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
淘宝SOA框架dubbo学习(5)--结果缓存
阅读量:6226 次
发布时间:2019-06-21

本文共 3865 字,大约阅读时间需要 12 分钟。

hot3.png

啥也不说了,这次直接上代码

1、客户端和服务提供端共用接口类

package com.alibaba.dubbo.demo;public interface CacheService {    String findCache(String id);}

2、服务提供端接口实现类

package com.alibaba.dubbo.demo.provider;import java.util.concurrent.atomic.AtomicInteger;import com.alibaba.dubbo.demo.CacheService;public class CacheServiceImpl implements CacheService {    private final AtomicInteger i = new AtomicInteger();    @Override    public String findCache(String id) {        String result = "request: " + id + ", response: " + i.getAndIncrement();        System.out.println(result);        return result;    }}

3、服务提供端配置文件

     
    
     
    
     
    
     
    
     
    
     
    
     
    
        
 

4、客户端配置文件

     
    
     
    
     
    
     
    
    
 

5、客户端主类

import org.springframework.context.support.ClassPathXmlApplicationContext;import com.alibaba.dubbo.demo.CacheService;public class Consumer {    /**     * @param args     * @throws Exception     */    public static void main(String[] args) throws Exception {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(                new String[] { "classpath:consumer.xml" });        context.start();        // DemoService demoService = (DemoService)        // context.getBean("demoService");        // while (true) {        // String hello = demoService.sayHello("world");        // System.out.println(hello);        //        // Thread.sleep(100);        // }        // 参数校验示例        // ValidationService validationService = (ValidationService)        // context.getBean("validationService");        // while (true) {        // ValidationParameter parameter = new ValidationParameter();        // parameter.setAge(23);        // parameter.setEmail("han@qq.com");        //        // try {        // String result = validationService.intsert(parameter);        //        // System.out.println(result);        // } catch (RpcException e) { // 抛出的是RpcException        // ConstraintViolationException ve = (ConstraintViolationException)        // e.getCause(); // 里面嵌了一个ConstraintViolationException        // Set
> violations =        // ve.getConstraintViolations(); // 可以拿到一个验证错误详细信息的集合        // System.out.println(violations);        // }        // }        CacheService cacheService = (CacheService) context.getBean("cacheService");        // 测试缓存生效,多次调用返回同样的结果。(服务器端自增长返回值)        String fix = null;        for (int i = 0; i < 5; i++) {            String result = cacheService.findCache("0");            if (fix == null || fix.equals(result)) {                System.out.println("i=" + i + " OK: " + result);            } else {                System.err.println("i=" + i + " ERROR: " + result);            }            fix = result;            Thread.sleep(500);        }        // LRU的缺省cache.size为1000,执行1001次,应有溢出        for (int n = 0; n < 1001; n++) {            String pre = null;            for (int i = 0; i < 10; i++) {                String result = cacheService.findCache(String.valueOf(n));                if (pre != null && !pre.equals(result)) {                    System.err.println("n=" + n + " ERROR: " + result);                }                pre = result;            }        }        // 测试LRU有移除最开始的一个缓存项        String result = cacheService.findCache("0");        if (fix != null && !fix.equals(result)) {            System.out.println("OK: " + result);        } else {            System.err.println("ERROR: " + result);        }    }}

6、客户端控制台,返回值

i=0 OK: request: 0, response: 0i=1 OK: request: 0, response: 0i=2 OK: request: 0, response: 0i=3 OK: request: 0, response: 0i=4 OK: request: 0, response: 0OK: request: 0, response: 1001

转载于:https://my.oschina.net/hanshubo/blog/377634

你可能感兴趣的文章
Java课堂 动手动脑5
查看>>
Python实战之字符串的详细简单练习
查看>>
SSM框架快速整合实例——学生查询
查看>>
p标签中的文字垂直居中
查看>>
小程序(将Solaris下的换行符转化为windows下的换行符)
查看>>
MY-IMX6 Linux-3.14 测试手册(Qt版)
查看>>
js客户端UI框架
查看>>
【转】四元数(Quaternion)和旋转
查看>>
使用vue.js常见错误之一
查看>>
centos7配置openldap服务器
查看>>
bzoj 1500 修改区间 splay
查看>>
组合数打表法(1587: 爬楼梯)
查看>>
Symmetric Tree
查看>>
Oracle用户管理
查看>>
关于网络爬取(爬虫)01
查看>>
python re模块findall()详解
查看>>
MSTest
查看>>
java 给任务传递参数
查看>>
oracle之 反向键索引
查看>>
mysql+keepalived 双主热备高可用
查看>>