springcloud 服务注册、反注册 AOP 拦截,实现自定义功能
@Aspect
@Component
@Order(1000)
public class EurekaServerAspect
{
private Logger logger = Logger.getLogger(getClass());
@Autowired
IRegisterSevice registerSevice;
@Pointcut("execution(public * org.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfiguration.peerAwareInstanceRegistry(..))")
public void instanceAspect(){}
@Pointcut("execution(public * org.springframework.cloud.netflix.eureka.server.InstanceRegistry.register(..))")
public void registerAspect(){}
@Pointcut("execution(public * org.springframework.cloud.netflix.eureka.server.InstanceRegistry.cancel(..))")
public void cancelAspect(){}
@Pointcut("execution(public * org.springframework.cloud.netflix.eureka.server.InstanceRegistry.renew(..))")
public void renewAspect(){}
@Around("instanceAspect()")
public Object instance(ProceedingJoinPoint joinPoint) throws Throwable
{
logger.info("aspect joinPoint = "+joinPoint);
//暂时不做修改,待后续扩展
return joinPoint.proceed();
}
@Around("registerAspect()")
public void register(ProceedingJoinPoint joinPoint) throws Throwable
{
logger.info("registerAspect()");
logger.info("aspect joinPoint = "+joinPoint);
Object[] args =joinPoint.getArgs();
if(args!=null&&args.length>0)
{
InstanceInfo arg0 = (InstanceInfo) args[0];
if (registerSevice.containInstanceInfo(arg0.getInstanceId(), arg0.getAppName()))
{
return ;
}
// 注册新服务实例,保存入数据库
registerSevice.insertMicroServerInstance((InstanceInfo)arg0);
}
//加入自定义的注册的拦截逻辑
joinPoint.proceed();
}
@Around("cancelAspect()")
public Object cancel(ProceedingJoinPoint joinPoint) throws Throwable
{
logger.info("cancelAspect()");
logger.info("aspect joinPoint = "+joinPoint);
Object[] args =joinPoint.getArgs();
if(args!=null&&args.length>0)
{
String appName = (String) args[0];
String serverId = (String) args[1];
registerSevice.cancelInstanceInfo(serverId, appName);
}
//加入自定义的反注册逻辑
return joinPoint.proceed();
}
@Around("renewAspect()")
public Object renew(ProceedingJoinPoint joinPoint) throws Throwable
{
logger.info("renewAspect()");
logger.info("aspect joinPoint = "+joinPoint);
//加入自定义的反注册逻辑
Object[] args =joinPoint.getArgs();
if(args!=null&&args.length>0)
{
String appName = (String) args[0];
String serverId = (String) args[1];
registerSevice.updateInstanceInfoHeartbeatTime(serverId, appName, System.currentTimeMillis(), null);;
}
return joinPoint.proceed();
}
}
springcloud 服务注册、反注册 AOP 拦截,实现自定义功能的更多相关文章
- 【Demo 0025】注册/反注册窗体类RegisterClassEx/UnregisterClass
所有窗体在创建前都必须注册窗体类,只有注册的窗体类才被系统认知并允许实例化,换句话说通过注册告诉进程窗体管理器此类窗体的属性如: 背景色,窗体上的鼠标样式以及窗体事件处理函数等; 有一些控件类系统自 ...
- delphi注册/反注册OCX
uses ShellAPI; function ExecAndWait(const ExecuteFile, ParamString : string): boolean; var SEInfo: T ...
- dll的注册与反注册
regsvr32.exe是32位系统下使用的DLL注册和反注册工具,使用它必须通过命令行的方式使用,格式是:regsvr32 [/i[:cmdline]] DLL文件名命令可以在"开始→运行 ...
- aop 拦截含有特定注解的类
1.功能点:使用aop拦截含有自定义注解的类 1.自定义注解 package com.zhuanche.common.dingdingsync; import java.lang.annotation ...
- SpringCloud服务注册与发现
1.介绍对于微服务的治理而言,其核心就是服务的注册和发现.在SpringCloud 中提供了多种服务注册与发现组件:Eureka,Consul,Zookeeper.官方推荐使用Eureka. 说明:E ...
- SpringCloud服务注册与服务发现之Eureka
Eureka是SpringCloud Netflix的子模块之一,用于云端的服务发现,服务定位,实现云端中间层服务发现和故障转移.服务注册与发现对于微服务系统来说十分的重要,有了服务注册与发现,就省去 ...
- 一、springcloud服务注册、发现、调用(consul/eureka)
1.Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全 ...
- 《springcloud 一》搭建注册中心,服务提供者,服务消费者
注册中心环境搭建 Maven依赖信息 <parent> <groupId>org.springframework.boot</groupId> <artifa ...
- SpringCloud服务的注册发现--------Eureka
1,什么叫做服务的注册与发现 服务的注册与发现基于注册中心,注册中心本身是一个服务,也相当于一个载体,其他服务的注册需要注册到这个注册中心上. 注册:当服务器启动的时候,会将自己的服务器信息,通过别名 ...
随机推荐
- awk、nawk、mawk、gawk的简答介绍
awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出(即管道).它支持用户自定义函数和 动态正则表达式等先进功能,是linu ...
- 记录使用Redis和nginx 实现一个简单的负载均衡(FB)
这两年在博客园看了不少大牛的分享,一直打算能写点什么东西. 之前偶然看见一个利用Redis 当作 Session数据宿主的demo,出处我已经找不到了.后来没事看了看nginx相关的东西.其中负载均衡 ...
- 关于openSetting通过tap的调用
问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本 API和组件 小程序 Bug openSetting 工具 6.7.2 2.3.0 - 当前 Bug 的表现(可附上截图 ...
- TCP 三次握手与四次断开
三次握手建立连接 TCP连接是通过三次握手来连接的. 第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SY ...
- 2015年6月6日,杨学明老师《IT技术人才管理角色转型与实践》专题培训在苏宁云商成功举办!
2015.6.6,在中国南京苏宁总部,研发资深顾问.资深讲师为苏宁易购IT事业部全体产品总监.研发总监进行了为期一天的<IT技术人才管理角色转型与实践>的内训服务. 杨学明老师分别从技术人 ...
- Web前端:博客美化:二、鼠标特效
1.获取JS权限 因为是js代码所以需要放在 侧边栏公告 里 没开通之前,有一个申请的链接,点击即可,我是第二天才看到过审的 ^-^ 2.Ctrl+C.Ctrl+V 数组里的文字随自己心情啦 另:30 ...
- [20170604]12c Top Frequency histogram补充.txt
[20170604]12c Top Frequency histogram补充.txt 1.环境:SCOTT@test01p> @ ver1PORT_STRING ...
- Vue2 学习笔记4
文中例子代码请参考github 父组件向子组件传值 组件实例定义方式,注意:一定要使用props属性来定义父组件传递过来的数据 <script> // 创建 Vue 实例,得到 ViewM ...
- C#解析XML 例子二
<checkResult> <item> <fmId>XX0001</fmId> <fmItemId>20000RT</fmItemI ...
- c/c++ 友元的简单应用
友元的简单应用 1,对象 + 对象,或者,对象 + 数字,可以用类的成员函数去重载+号函数,但是,数字 + 对象就不能用类的成员函数去重载+号函数了, 因为编译器会把数字 + 对象翻译成数字.oper ...