我有Spring事件发布者和侦听器,其要求如下:
所以目前我正在使用openfeign来调用另一个微服务。
当侦听器方法同步运行时,此调用可以正常运行;当侦听器方法标记为@Async时,此调用将失败。
下面是示例代码: Fiegn接口配置:
foreach ($projects as $project_object) {
foreach ($project_object as $project) {
echo $project->name . '<br/>';
}
}
春季事件监听器:
@AuthorizedFeignClient(name = "another-microservice")
public interface CustomFeignInterface {
@PostMapping("api/call")
public ResponseEntity<String> callMethod(@RequestBody Foo foo);
}
按照上述代码,当我删除@Async时,对另一个微服务的调用是完美的,但是当我将@Async添加到@Component
public class FooEventListener {
@Autowired
private CustomFeignInterface customFeignInt;
@Async
@EventListener
public void handleCustomEvent(Foo foo) {
try {
ResponseEntity<String> res = customFeignInt.callMethod(foo);
} catch (Exception e) {
e.printStackTrace();
}
}
}
方法时失败。
我发现某个地方Feign不支持异步调用: https://github.com/OpenFeign/feign/issues/361
但是我仍然需要异步行为,我该如何实现呢?