Java反应式编程(3)

news2025/7/18 8:34:55

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~

在前面的文章中已经把vert.x框架给跑起来了,但是实际开发中服务端是需要响应客户端的请求的,所以肯定需要增加接口,但是该怎么加呢?有的人倾向于去搜索引擎找答案,其实还有一个比较好的方式是去官网看看有啥可以用的资料,比如说打开反应式编程的官网就能直接找到最新最准确的文档:

 

可以看到,点击进入【Vert.x Web】之后,再在左边浏览,然后点击【Routing by HTTP method】:

 

为了节约大家的时间,我就直接把代码展示出来了。

先创建接口路由和GET请求:

// 创建路由
Router router = Router.router(vertx);

// 创建一个GET请求
router.route(HttpMethod.GET, "/vertx/get")
  .handler(context -> {
    MultiMap queryParams = context.queryParams();
    String username = queryParams.contains("username") ? queryParams.get("username") : "unknown";
    String password = queryParams.contains("password") ? queryParams.get("password") : "unknown";
    context.json(
      new JsonObject()
        .put("username", username)
        .put("password", password)
    );
  });

再创建POST请求和HTTP服务

// 创建一个POST请求(用Postman测试)
router.route(HttpMethod.POST, "/vertx/api/:id/:username/")
  .handler(context -> {
    String id = context.pathParam("id");
    String username = context.pathParam("username");
    System.out.println(id + " - " + username);
    context.json(
      new JsonObject()
        .put("errcode", "200")
        .put("message", "success")
    );
  });

// 创建HTTP服务
vertx.createHttpServer().requestHandler(router).listen(8888, http -> {
  if (http.succeeded()) {
    startPromise.complete();
    System.out.println("HTTP server started on port 8888");
  } else {
    startPromise.fail(http.cause());
  }
});

现在可以先把代码运行一下看看,比如在浏览中访问

http://localhost:8080/vertx/get?username=xiangwang&password=123456

就能看到返回的JSON数据:

 

然后在Postman中访问POST请求,也能看到返回的JSON数据

 

现在Web的功能已经演示完了,接下来再来看看数据库的,同样可以去官网 找文档,可以看到,vertx支持大部分主流的SQL和NoSQL。

 

还是和之前一样,为了节约大家的时间,我就直接把MySQL的演示代码贴出来了。下面的配置是我电脑里面的MySQL数据库连接:

// 创建MySQL连接
MySQLConnectOptions connectOptions = new MySQLConnectOptions()
  // 端口号
  .setPort(3306)
  // IP地址或者域名
  .setHost("192.168.227.100")
  // 数据库
  .setDatabase("third")
  // 用户名
  .setUser("root")
  // 密码
  .setPassword("123456");
// 连接池选项
PoolOptions poolOptions = new PoolOptions().setMaxSize(5);
// 创建连接池
MySQLPool client = MySQLPool.pool(vertx, connectOptions, poolOptions);
// 简单查询
client.query("SELECT * FROM apply_info")
  .execute(ar -> {
    if (ar.succeeded()) {
      RowSet<Row> result = ar.result();
      System.out.println("获取到了 " + result.size() + " 行数据");
      for (Row row : result) {
        System.out.println("appid = " + row.getString("appid"));
      }
    } else {
      System.out.println("Failure: " + ar.cause().getMessage());
    }
    // 关闭
    client.close();
  });

有个小地方,如果提示报错:

 

只需要把代码中的【MySQLPool.pool(connectOptions, poolOptions);】改成【MySQLPool.pool(vertx, connectOptions, poolOptions);】就行了。

这就是最基础的反应式编程的代码示例了。虽然它还没有大规模应用,但是管它呢,先卷起来再说。


感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【华为OD机试真题 python】 绘图机器【2022 Q4 | 100分】

■ 题目描述 绘图机器的绘图笔初始位置在原点(0,0)机器启动后按照以下规则来进行绘制直线。 1. 尝试沿着横线坐标正向绘制直线直到给定的终点E 2. 期间可以通过指令在纵坐标轴方向进行偏移&#xff0c;offsetY为正数表示正向偏移,为负数表示负向偏移 给定的横坐标终点值E 以…

Timesnet: Temporal 2d-variation modeling for general time series analysis

Timesnet: Temporal 2d-variation modeling for general time series analysis (ICLR 2022) 时间序列分析在天气预报、异常检测、行为识别等领域有着广泛的应用。针对时序变化建模这一广泛分析任务的共同关键问题进行了研究。之前的方法试图直接从一维时间序列中实现这一点,由…

Java线程池如何实现线程复用

线程池把线程和任务进行解耦&#xff0c;线程归线程&#xff0c;任务归任务&#xff0c;摆脱了通过 Thread 创建线程时“一个线程必须对应一个任务”的限制。在线程池中&#xff0c;同一个线程可以从 BlockingQueue 中不断提取新任务来执行&#xff0c;其核心原理在于线程池对 …

学生动漫网页设计模板下载你的名字 大学生HTML网页制作作品 简单漫画网页设计成品 dreamweaver学生网站模板

Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业&#xff0c;茶文化网站 | 中华传统文化题材 | 京剧文化水墨风书画 | 中国民间年画文化艺术网站 | HTML期末大学生网页设计作业 HTML&#xff1a;结构 CSS&#xff1a;样式 在操作…

图像增强之灰度变换和直方图均衡化(附代码python+opencv)

一、图像增强的概念和分类 概念&#xff1a;图像增强是采用一系列技术去改善图像的视觉效果&#xff0c;或将图像转换成一种更适合于人或机器进行分析和处理的形式。例如采用一系列技术有选择地突出某些感兴趣的信息&#xff0c;同时抑制一些不需要的信息&#xff0c;提高图像的…

(JVM)双亲委派机制

Java 虚拟机对 class 文件采用的是按需加载的方式&#xff0c;也就是说当需要使用该类时才会将它的 class 文件加载到内存生成 class 对象。而且加载某个类的 class 文件时&#xff0c;Java 虚拟机采用的是双亲委派模式&#xff0c;即把请求交由父类处理&#xff0c;它是一种任…

文档基础模型引领文档智能走向多模态大一统

编者按&#xff1a;自2019年以来&#xff0c;微软亚洲研究院在文档智能领域进行了诸多探索&#xff0c;开发出一系列多模态任务的文档基础模型 (Document Foundation Model)&#xff0c;包括 LayoutLM (v1、v2、v3) 、LayoutXLM、MarkupLM 等。这些模型在诸如表单、收据、发票、…

MySQL中find_in_set函数的使用

1.语法 FIND_IN_SET(str,strlist) &#xff08;1&#xff09;str 要查询的字符串 &#xff08;2&#xff09;strlist 字段名&#xff1b; 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果&#xff0c;返回结果为null或记录 假如字符串str在由N个子链组成的…

5G无线技术基础自学系列 | 物理上行控制信道

素材来源&#xff1a;《5G无线网络优化实践》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 PUCCH用于传输上行控制信息&#xff08;U…

岭回归、Lasso回归和弹性网络

减少过拟合的一个好方法是对模型进行正则化&#xff08;即约束模型&#xff09;&#xff1a;它拥有的自由度越少&#xff0c;则过拟合数据的难度就越大。正则化多项式模型的一种简单方法是减少多项式的次数。 对于线性模型&#xff0c;正则化通常是通过约束模型的权重来实现的。…

记一次生产中使用CompletableFuture遇到的坑

为什么使用CompletableFuture 业务功能描述&#xff1a;有一个功能是需要调用基础平台接口组装我们需要的数据&#xff0c;在这个功能里面我们要调用多次基础平台的接口&#xff0c;我们的入参是一个id&#xff0c;但是这个id是一个集合。我们都是使用RPC调用&#xff0c;一般…

【22年11月12日更新】搭建宝塔面板、青龙面板“京东代挂”

本文章仅供学习 一、青龙面板是什么&#xff1f; 青龙面板可以运行某东脚本&#xff0c;你在某宝、某度等各个渠道搜索“京东代挂”&#xff0c;都是用青龙面板。 二、搭建宝塔面板 1.更新 yum 包 首先下载finalshell通过账号密码连接服务器&#xff0c;然后输入 yum up…

零基础程序员想要学好.Net,跟着这7个步骤学习就可以了

作为一个初学者程序员&#xff0c;很喜欢问的一个问题就是&#xff1a;零基础如何自学编程&#xff1f;在后台也有很多读者私信我&#xff0c;问我这个问题&#xff0c;其实这个问题比较大&#xff0c;不是一两句就可以说清楚的。 所以&#xff0c;今天结合我个人的经历&#x…

注意力机制详解(Attention详解)

注意力机制与人眼类似&#xff0c;例如我们在火车站看车次信息&#xff0c;我们只关注大屏的车次信息&#xff0c;而忽略大屏外其他内容&#xff0c;从而导致钱包被偷。。。 注意力机制只关注重点信息&#xff0c;忽略不重要的信息&#xff0c;关注最核心的内容。 主要就是这…

推荐系统实战2——EasyRec 推荐框架环境配置

推荐系统实战2——EasyRec 推荐框架环境配置学习前言先验条件EasyRec仓库地址EasyRec环境配置一、EasyRec的下载二、EasyRec的初始化三、EasyRec的安装四、一些额外的情况学习前言 EasyRec是阿里巴巴开源的推荐系统框架。生命苦短&#xff0c;从建好的推荐系统框架开始学&…

【C++】STL简介 -- string 的使用及其模拟实现

文章目录一、STL 简介1、什么是 STL2、STL 的版本3、STL 的六大组件4、STL 的重要性5、如何学习 STL二、string 类的使用1、什么是 string2、string 类模板3、构造函数4、Iterators5、Capacity6、Element Access7、Modify8、String Operations9、Non-member function overloads…

Arduino程序设计(二) 按键控制LED灯

按键控制LED灯程序设计前言一、按键控制LED灯——内部上拉&#xff08;基础&#xff09;二、按键控制LED灯——外部上拉&#xff08;基础&#xff09;三、按键控制LED灯&#xff08;进阶&#xff09;总结参考文献前言 本文主要介绍三种按键控制LED灯的实现方式&#xff0c;分别…

PatchCore原理与代码解读

paper&#xff1a;Towards Total Recall in Industrial Anomaly Detection code&#xff1a;GitHub - amazon-science/patchcore-inspection 存在的问题 目前无监督缺陷检测常用的一种方法是直接利用在ImageNet上预训练的模型中的表示&#xff0c;而不专门进行目标分布的迁…

从零开始将图片信息和空间信息绑定,并在前端展示到地图

作者&#xff1a;xiaoyan 关键词&#xff1a;前端查询时展示和空间数据绑定的图片资源 本文适合零基础入门 背景&#xff1a;iServer支持空间查询&#xff0c;可以将空间数据属性表中的属性查询出来&#xff0c;如通过SQL语句查询出某地大楼实际层高&#xff0c;或者查询出某…

RHCE实验--配置nfs服务

1、开放/nfs/shared目录&#xff0c;供所有用户查询资料&#xff1b; 2、开放/nfs/upload目录&#xff0c;供所有用户上传下载资料&#xff1b; 服务器与客户端都写好yum源以及挂载光盘&#xff0c;然后安装服务包 [rootserver ~]# yum install rpcbind -y [rootserver ~]# y…