Closed soedev closed 6 years ago
easytransaction自身暂不支持,
除非使用底层rpc框架的filter自行实现(如restTemplate的interceptor),但这种实现不不能跨rpc框架使用(不能无缝切换到dubbo)
如果着急可以在EasyTransaction底层使用的restTemplate加入interceptor
不着急可以等到周末,我这边提供/暴露一个EasyTransaction层级的header修改方案
谢谢,不着急,我们这边还在熟悉框架中,如果补偿的时候,出现异常,存在未处理完成的事务,框架是否提供接口重试
框架自动会重试,但要手工重试的话(用于测试等场景、或者用于界面手动触发重试),可以参考 https://github.com/QNJR-GROUP/EasyTransaction/blob/master/easytrans-starter/src/test/java/com/yiqiniu/easytrans/test/FullTest.java 这里的一段代码,如下
List<LogCollection> unfinishedLogs = logReader.getUnfinishedLogs(null, 100, new Date());
for (LogCollection logCollection : unfinishedLogs) {
guardian.process(logCollection);
}
后来考虑了下,没有做成一个EasyTrans层次的Header配置,主要是因为不同底层RPC框架传输header形式不太一致,即使统一了也不见得能带来好处,因此只提供了修改 RestRibbon 下HttpHeader的方式,可以在SPRING中注入,EasyTransRpcConsumer,并强制转换为 RestRibbonEasyTransRpcConsumerImpl,这样可以调用方法
RestTemplate getLoadBalancedRestTemplate()
然后可以通过RestTemplate的interceptors来调整header
发送端加上header可以添加自定义内容即可,接收端有什么拦截器可以前置处理下