微风·六: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.2.1 异步方式

异步方式:

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

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.3.2 异步方式代码问题抛出

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

1.3.2.1 抛出问题分析

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

1.4 参考资料

ES高级客户端文档操作实战
ES之6:restHighLevelClient源码文章来源地址https://www.toymoban.com/news/detail-776501.html

到了这里,关于微风·六:RequestOptions:请求方式(同步/异步)探究,及异步方式问题抛出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序——异步请求使用async/await实现同步

            在小程序的开发中,我们知道网络请求wx.requset是一个异步请求的API,当我们使用它时,会出现请求还没有结束,我们下面写的处理数据的代码就已经执行了从而导致了我们写的程序出现问题,那么我们该怎么解决这个问题呢?今天我们用async/await来实现一下吧。

    2024年02月11日
    浏览(30)
  • 同步_异步请求和Ajax并利用axios框架简化

    目录 同步和异步 原生的Ajax 创建XMLHttpRequest对象 常用方法 常用属性 axios框架 同步请求:发送请求后,会做出回应,回应的内容会覆盖浏览器中的内容,这样会打断其他正常的操作,显得不太友好,并且请求时会携带所有的信息。 异步请求:前端正常输入时,可以同时与后端

    2024年02月13日
    浏览(29)
  • 关于 setData 同步异步的问题

    小程序官方文档中的回答解释: 所以大概意思就是:    1.setData 在逻辑层的操作是同步,因此 this.data 中的相关数据会立即更新,比如下面的例子:          2.  setData 在视图层的操作是异步,因此页面渲染可能并不会立即发生。  其实从逻辑层发送到视图层的过程中相比直接在

    2024年02月01日
    浏览(30)
  • 18、全文检索--Elasticsearch-- SpringBoot 整合 Spring Data Elasticsearch(异步方式(Reactive)和 传统同步方式 分别操作ES的代码演示)

    启动命令行窗口,执行:elasticsearch 命令即可启动 Elasticsearch 服务器 三种查询方式解释: 方法名查询: 就是全自动查询,只要按照规则来定义查询方法 ,Spring Data Elasticsearch 就会帮我们生成对应的查询语句,并且生成方法体。 @Query 查询 : 就是半自动查询, 按照 S

    2024年03月12日
    浏览(54)
  • 记录--如何解决异步请求中的返回值问题

    在 Web 开发中,异步请求是一个常见的操作。然而,在异步请求中正确地获取返回值却可能会变得棘手。本文将介绍如何解决异步请求中的返回值问题,并提供一种解决方案。 在某个 Web 应用程序中,用户遇到了无法正确获取异步请求返回值的问题。具体来说,用户在第一个

    2024年02月08日
    浏览(26)
  • 一文读懂异步和同步——async/await在运行时和普通代码的执行顺序的问题

    一、执行顺序问题 JavaScript中的await语句是异步编程中用于等待Promise对象执行结果的,它通常与async函数一起使用。在使用await时,程序的执行将暂停,直到该后面的Promise对象完成执行并返回结果。 函数代码执行顺序通常情况下按照代码所在文件从上至下

    2024年02月03日
    浏览(34)
  • 谷粒商城笔记+踩坑(20)——订单确认页。feign、异步请求头丢失问题+令牌保证幂等性

    导航: 谷粒商城笔记+踩坑汇总篇 目录 1、订单确认页 1.1、vo类抽取 1.2、获取订单详情页数据,完整代码 1.2.1、Controller编写跳转订单确认页方法 1.2.2、Service获取订单详情页数据 1.3、【会员模块】获取会员所有收货地址 1.3.1、controller 1.3.2、service  1.4、订单服务远程调用用户

    2023年04月09日
    浏览(71)
  • 前端异步请求并解决跨域问题(Ajax+axios框架)、后端响应多个数据(JSON)

    目录 一、前后端同步异步请求 1.同步请求: 2.异步请求: 3.跨域问题(前端问题) 4.axios框架(封装后) 二、后端向前端响应多个数据-JSON 1.同步请求:         发送一个请求,回应请求,回应的内容会覆盖浏览器中的内容,这样会 打断 前端其他的正常操作。 2.异步请求:

    2024年02月07日
    浏览(54)
  • vue中父组件异步数据通过props方式传递给子组件,子组件接收不到的问题

    问题描述 组件化开发中经常用到父子组件的通信,父传子子传父等数据的操作,如果父组件的数据是发请求从后端获取的异步数据,那么父组件将这个数据传递给子组件的时候,因为是异步数据,就会出现父组件传递过去了,但是子组件mounted钩子初始情况下是接收不到的问

    2023年04月08日
    浏览(28)
  • get方式发送请求出现跨域问题

    Access to XMLHttpRequest at \\\'http://localhost:8090/concern?pageSize=10pageNum=1param[deviceWorkspace]=param[userAccount]=%22190013129%22\\\' from origin \\\'http://localhost:8080\\\' has been blocked by CORS policy: No \\\'Access-Control-Allow-Origin\\\' header is present on the requested resource. 但同伴说他已经在后端对跨域问题进行处理了。这里可以考

    2024年02月16日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包