Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用@Async(Springboot应用程序)的方法中实现回调_Java_Spring_Spring Boot_Callback - Fatal编程技术网

Java 如何在使用@Async(Springboot应用程序)的方法中实现回调

Java 如何在使用@Async(Springboot应用程序)的方法中实现回调,java,spring,spring-boot,callback,Java,Spring,Spring Boot,Callback,我需要实现一个类似回调的解决方案,以通知方法调用的成功/失败。我调用的这些方法都在Springboot应用程序中,它们都是异步的。更具体地说,它们都使用@Async注释 我没有成功地找到解决办法,我想知道其他人是否有一些想法。我不能使用另一个异步方法(也就是说,我不能更改现有代码来删除@async,并在其位置上使用一些东西)。但是,我可以修改方法体本身以添加任何回调功能 谢谢。我认为您可以使用两种方法创建一个新接口,然后将实现参数传递给异步方法 public interface TaskCall

我需要实现一个类似回调的解决方案,以通知方法调用的成功/失败。我调用的这些方法都在Springboot应用程序中,它们都是异步的。更具体地说,它们都使用
@Async
注释

我没有成功地找到解决办法,我想知道其他人是否有一些想法。我不能使用另一个异步方法(也就是说,我不能更改现有代码来删除
@async
,并在其位置上使用一些东西)。但是,我可以修改方法体本身以添加任何回调功能


谢谢。

我认为您可以使用两种方法创建一个新接口,然后将实现参数传递给异步方法

public interface TaskCallBack {
    
    void success(int code);
    void fail(int code);
}

根据M.Derium(上文)的建议,我使用CompletableFuture作为我的解决方案。我仍在实施和测试过程中,但这似乎是一个很好的解决方案。这里有一个很好的参考资料:

这就是
未来的意义所在。从
@Async
方法返回
Future
,并检查结果。但是,要小心,因为这可能会在出错时突然导致阻塞而不是异步!你也可以试试春季活动。它们使用发布者/监听器模型,可以事务性配置,监听器本身也可以是异步的。有关更多信息,请参阅。@M.Deinum我正在使用CompletableFuture,因为您让我注意到了它。我尚未完成执行,但可能会因此更新此票据。谢谢@谢谢你的意见。我正在实现一个完整的未来。谢谢你的输入,我一直在执行一个基于你的建议的解决方案。我不知道该怎么表扬你。我亲自回复了我的帖子,向你点头求助。我不确定这是否是给你信用的正确方式。再次感谢。谢谢你的意见。我正在实现一个完整的未来。谢谢你的意见。