-1
我有一個休息服務,它執行大量文件下載。我不希望用戶等到文件下載完成,而是讓用戶撥打其餘的電話,然後向用戶回覆說「文件在/ tmp /進行中下載」的消息。REST方法調用@async
我有一個使用@async方法執行文件下載的服務。一旦文件下載完成,我想調用其他代碼(在kafka上發佈成功消息)。我無法鉤住這部分代碼。我在哪裏放置@async方法完成執行後運行的代碼?
我有一個休息服務,它執行大量文件下載。我不希望用戶等到文件下載完成,而是讓用戶撥打其餘的電話,然後向用戶回覆說「文件在/ tmp /進行中下載」的消息。REST方法調用@async
我有一個使用@async方法執行文件下載的服務。一旦文件下載完成,我想調用其他代碼(在kafka上發佈成功消息)。我無法鉤住這部分代碼。我在哪裏放置@async方法完成執行後運行的代碼?
假設這是春季? 您的方法可以返回您的返回類型的CompletableFuture包裝。看看描述這一點的Spring docs。
然後,您可以使用then
前綴方法CompletableFuture
在結果可用時附加回調函數。有一些很好的例子here。
在你的情況可能是這個樣子:
@Async
public CompletableFuture<FileDownloadResult> myDownloadFileAsync(...) {
// download the file and create the result..
return CompletableFuture.completedFuture(result);
}
...
CompletableFuture<FileDownloadResult> future = myDownloadFileAsync(...);
future.thenAccept(res -> {
// do things with the file download result
publishToKafka(...);
});
future.get();
謝謝。做更多的谷歌搜索我實際上擊中了你提到的兩個教程:) – khan379