悟空,拿我的打狗棒来

异步调用数据没有写入的问题咨询

Elasticsearch | 作者 fsluo | 发布于2020年01月19日 | 阅读数:1089

我采用异步调用方式,程序结束后数据没有写入,让程序等待10秒再结束数据就写入了,这个异步处理该如何理解?
@Test
public void asynchronousCall() throws Exception {
Map<String,Object> jsonMap = new HashMap<>();
jsonMap.put("user", "jack");
jsonMap.put("postDate", new Date());
jsonMap.put("message", "I'm Jack 11");

//es 默认使用内部版本控制,内部版本从0开始递增,每次增删改版本都会+1
//如果需使用外部版本控制,则需设置versionType为VersionType.EXTERNAL,且外部设置的版本号必须大于等于当前版本
IndexRequest request = new IndexRequest("posts").id("12").source(jsonMap);
client.indexAsync(request, RequestOptions.DEFAULT, new ActionListener<IndexResponse>() {
@Override
public void onResponse(IndexResponse indexResponse) {
//异步调用成功打印id
System.out.println(indexResponse.getId());
}

@Override
public void onFailure(Exception e) {
e.printStackTrace();
System.out.println("执行失败");
}
});
//只有这边让线程sleep10秒数据才写入
Thread.sleep(10000);
System.out.println("完成");
}
已邀请:

Charele - Cisco4321

赞同来自:

不是这样的,我试了一下,不需要加Thread.sleep。
 
除非你显式调用System.exit之类的程序退出之类的方法。

要回复问题请先登录注册