如何在Java中使用类星体框架将Elasticsearch异步索引请求转换为光纤阻塞

时间:2019-06-27 07:18:21

标签: java multithreading elasticsearch quasar fibers

我正在关注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的网络调用没有发生。

0 个答案:

没有答案