我正在将Hystrix集成到SilverWare微服务平台中,我想使用hystrix-javanica注释。这些注释旨在应用于需要使用Hystrix执行的方法的实际实现。问题是我需要实现一个只有服务接口的通用解决方案。它必须以这种方式完成,以便让开发人员使用对其他微服务的注释引用(当它们实现自己的服务时),而无需处理这些服务的实现。
我想出了一个解决方案,你用这样的东西注释你的微服务参考:
@Inject
@MicroserviceReference
@HystrixConfiguration(MyServiceHystrix.class)
private MyService myService;
然后实现(或扩展)服务接口并将Hystrix注释放在其方法上:
public interface HystrixedMyService extends MyService {
@HystrixCommand
doSomething();
}
当您的微服务中的某个字段上有@HystrixConfiguration
注释引用另一个服务时,SilverWare将扫描作为此注释的参数给出的类,并为该服务的每个方法准备一个Hystrix命令。该命令还将接收一个带有实际方法调用的callable,该调用将在其run()
方法中执行。
我的问题是:是否有可能重用hystrix-javanica的某些(内部)部分,因此我不需要扫描所有注释并自己创建这些Hystrix命令?我可以看到大多数类都只能用于AOP。