Я следую за 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 не происходит.