关于Elasticsearch Java异步API的问题
怪我咯
怪我咯 2017-04-17 17:27:05
[Java讨论组]

在使用Elasticsearch的Java API写一个简单的库,遇到了一个问题。

下面这段代码,向Elasticsearch集群index一个文档:

client.prepareIndex(index, type).setSource(source).execute(settings.getIndexResponseListener());

settings.getIndexResponseListener()的返回值是注册给Elasticsearch的回调监听器。这个方法调用应该是直接返回了,实际的网络IO是在Elasticsearch的worker thread里做的。

第一个问题是:编写测试程序的时候,如果程序的主线程退出,Elasticsearch的工作线程也紧跟着结束了,有些文档还没来得及被工作线程index。我不知道这个问题如何解决(当然可以换成同步调用)。

第二个问题是,我搜到了这篇问答:
http://stackoverflow.com/questions/7416018/when-does-the-main-thread-stop-in-java
大概意思是说,只有所有的user thread(非幽灵线程)都退出了,运行时才会退出。那为什么我的程序里主线程退出了之后,Elasticsearch的线程池也紧跟着结束了?

第三个问题关于Elasticsearch的文档:
https://www.elastic.co/guide/en/elasticsearch/client/java-api/1.7/_operation_threading.html
我看不太明白,为什么在调用者线程执行的时候,还能是异步执行的?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号