从异步方法伪装调用

时间:2018-12-05 07:11:56

标签: java spring-boot jhipster spring-cloud-feign feign

我有Spring事件发布者和侦听器,其要求如下:

  1. 通过某种方法触发事件。
  2. 从侦听器类中监听事件
  3. 事件被监听后立即致电另一个微服务

所以目前我正在使用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

但是我仍然需要异步行为,我该如何实现呢?

0 个答案:

没有答案