Как преобразовать асинхронный индексный запрос Elasticsearch в Fiber-Blocking, используя квазарфрейм в Java - PullRequest
1 голос
/ 27 июня 2019

Я следую за 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 - асинхронный вызов индексного вызова aysnc для клиентов высокого уровня Java.

Я также определил свой класс IndexAsync, который расширяет класс FiberAsync, как описано в quasar doc, но теперь, когда я вызываю метод операции блокировки fiberBlockingIndex в моем коде, quasar выдает предупреждение ниже и не делает вызов индекса Elasticsearch.

ВНИМАНИЕ: незадействованные методы (помеченные '**') или call-сайты (помеченные '!!') обнаружено в стеке вызовов:

Потратив так много времени и обратившись к этому ТАКому вопросу, я добавил @Suspendable, но все еще не смог разрешить это предупреждение, и он находится в нескольких слоях, и, наконец, мой сетевой вызов ES не происходит.

...