gpt4 book ai didi

java - 运行线程时的异常处理

转载 作者:行者123 更新时间:2023-12-02 23:44:29 24 4
gpt4 key购买 nike

我有一个具有kafka使用者的应用程序,并根据接收到的数据更新Elastic搜索。

我的问题是,当ES发生故障时,kafka使用者会完全停止并且不会重新启动。

我相信这是由于我的ES代码的运行方式:

public CompletionStage<SearchResponse> executeSearch(SearchRequest searchRequest) {
CompletableFuture<SearchResponse> f = new CompletableFuture<>();

client.searchAsync(searchRequest, RequestOptions.DEFAULT, new ActionListener<SearchResponse>() {
@Override
public void onResponse(SearchResponse searchResponse) {
f.complete(searchResponse);
}

@Override
public void onFailure(Exception e) {

throw new Exception(); // I am guessing because of this
}
});
return f;
}

如果我将 onFailure方法更改为:
            public void onFailure(Exception e) {

f.complete(null);
}

它运行完美,但是我不明白为什么引发异常会导致这种情况。

任何帮助将不胜感激。

最佳答案

对于那些需要解决方案的人,我将代码更改为以下代码,使其可以正常工作:

public void onFailure(Exception e) {
f.completeExceptionally(new Exception());
}

关于java - 运行线程时的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62276312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com