我正在关注https://docs.paralleluniverse.co/quasar/,并且需要将我的Elastic-search异步索引调用转换为光纤阻塞代码。
他们在此Javadoc https://docs.paralleluniverse.co/quasar/javadoc/co/paralleluniverse/fibers/FiberAsync.html中给出了一个非常基本的异步调用的示例,并且我定义了如下的光纤阻塞操作:
@Suspendable
void fiberBlockingIndex(IndexRequest indexRequest) throws Exception {
new IndexAsync(elasticsearchClient, indexRequest, RequestOptions.DEFAULT) {
protected void requestAsync() {
elasticsearchClient.getClient().indexAsync(indexRequest, RequestOptions.DEFAULT, this);
}
}.run(1000, TimeUnit.MILLISECONDS);
}
elasticsearchClient.getClient().indexAsync
是Java高级客户端aysnc索引调用的异步调用。
我还定义了我的IndexAsync
类,该类扩展了FiberAsync
类,如quasar文档中所述,但是现在当我在代码中调用阻塞操作方法fiberBlockingIndex
时,quasar给出以下警告并且不会调用Elasticsearch索引。
警告:非仪器化方法(标记为“ **”)或呼叫站点(标记为 '!')在调用堆栈中检测到:
花了很多时间并参考了this这样的问题之后,我添加了@Suspendable
,但仍然无法解决此警告,并且它是多层的,最后我对ES的网络调用没有发生。