java怎么拦截某个对象
251
2022-09-19
SpringCloud-----Ribbon手写轮询算法
1.在服务的消费方提供一个接口
public interface LoadBalancer{ // serviceInstanceList 为eureka中服务的数量 ServiceInstance instance(List
2.实现接口
@Component // 注意一定要将其注入到spring容器之中public class MyLb implements LoadBalancer{ // 原子类,保证多线程安全,赋予初始化值为0 private AtomicInteger atomicInteger = new AtomicInteger(0); // 获取第几次访问 // 使用 自旋锁 和 CAS private final int getAndIncrement(){ int current; int next; do{ current = this.atomicInteger.get(); next = current >= Integer.MAX_VALUE ? 0 : current+1; }while (!this.atomicInteger.compareAndSet(current,next)); // CAS 和内存的数据比较,没有更改,则改为期望的值 return next; } @Override public ServiceInstance instance(List
3.Controller接口实现 ,记住注释@LoadBalanced
public static final String PAYMENT_URL = " @Resource private DiscoveryClient discoveryClient; @Resource private LoadBalancer loadBalanced; @GetMapping(value = "/consumer/payment/lb") public String getPaymentLB(){ List
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~