当前位置:   article > 正文

微风·六:RequestOptions:请求方式(同步/异步)探究,及异步方式问题抛出

requestoptions

1 RequestOptions:请求方式(同步/异步)

1.1 问题产生

在使用ES高级客户端向ES服务器发送请求,使用同步请求方式创建索引库时,有段代码RequestOptions.DEFAULT,经查阅特指同步调用方式,当然会有异步调用。

1.2 问题分析

调用方式解释
同步方式① 以同步方式执行IndexRequest时,客户端必须等待返回结果IndexResponse;② 在收到IndexResponse后,客户端可继续执行代码
异步方式① 以异步方式执行IndexRequest时,高级客户端不必同步等待请求结果的返回,可直接向接口调用方式返回异步接口执行成功结果;② 为处理异步返回的响应结果或处理请求执行过程中引发的处理信息,用户需指定监听器ActionListener,若请求执行成功,则调用ActionListener的onRespose()方法,然后执行方法里相应逻辑处理;若请求执行失败,则调用ActionListener的onFailure()进行相应逻辑处理

1.2.1 同步方式

同步方式:

restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
  • 1

1.2.1 异步方式

异步方式:

estHighLevelClient.indexAsync(indexRequest, RequestOptions.DEFAULT, actionListener);
  • 1

1.3 问题解决

1.3.1 异步方式代码

    /**
     * 向es服务器发送请求,创建索引,请求方式:异步
     */
    @Test
    public void testCreateIndex2(){
        //目标:向es服务器发送请求,创建索引,请求方式:异步
        //1.创建request对象
        IndexRequest indexRequest = new IndexRequest("hetol");
        indexRequest.source(Constants.MAPPING,XContentType.JSON);
        //3.通过ES高级客户端向ES服务器通信
        ActionListener<IndexResponse> listener = new ActionListener<IndexResponse>() {
            @Override
            public void onResponse(IndexResponse indexResponse) {
                System.out.println("执行成功");
            }

            @Override
            public void onFailure(Exception e) {
                System.out.println("执行失败"+e.getMessage());
            }
        };
        client.indexAsync(indexRequest,RequestOptions.DEFAULT,listener);
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

1.3.2 异步方式代码问题抛出

在执行此代码过程中,发现有两点问题:
① 在代码执行结束,发现ES中索引库创建成功
② 在索引库创建成功的同时,发现严重作物:执行成功,可以成功后逻辑进入onResponse( )方法,百思不得其解,为什么结果却是走了onFailure( )失败的方法,报错说意外断开连接,难道这个方法就是如此吗(执行完断开连接,可是onResponse( )方法里的逻辑不是也就不能走了)?
在这里插入图片描述

1.3.2.1 抛出问题分析

思路:看源码正在分析,如有见解,欢迎评论区留言、探讨。

1.4 参考资料

ES高级客户端文档操作实战
ES之6:restHighLevelClient源码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/123017
推荐阅读
相关标签
  

闽ICP备14008679号