如何报告JAXWS SOAP中的故障转移功能何时处于活动状态



我有一个像这样构建的客户端:

val strategy = new SequentialStrategy()
strategy.setAlternateAddresses(listOfAddresses)
val feature = new CircuitBreakerFailoverFeature(2, 60000)
feature.setStrategy(strategy)
val factory = new JaxWsProxyFactoryBean()
factory.setServiceClass(classOf[MyService])
factory.setAddress(primaryAddress)
factory.setFeatures(Lists.newArrayList(feature))
factory.create().asInstanceOf[MyService]

我现在遇到的问题是,当我的客户端由于连接到primaryAddress的问题而实际转到某个alternative地址时,我需要向监控工具报告。但我找不到如何检测地址之间的切换(我想过添加自定义拦截器,但我敢打赌有更好的方法(。这样做的正确方法是什么?

看起来或多或少正确的方法是将inject报告逻辑写入TargetSelector,如下所示:

class MonitoredCircuitBreakerTargetSelector(errorReporter: Monitoring) extends CircuitBreakerTargetSelector {
@Override
protected void onFailure(context: FailoverTargetSelector#InvocationContext, ex: Exception)= {
errorReporter.report(s"...")
super.onFailure(context, ex)
}
}

然后在FailoverFeature 上调用feature.setTargetSelector(new MonitoredCircuitBreakerTargetSelector(errorReporter))

最新更新