用Vert.x适配华为云和GaussDB
一、适配目的
随着云计算和响应式编程技术的不断发展,越来越多的企业开始关注并应用这些技术。华为云作为国内领先的云服务提供商,拥有丰富的云产品和广泛的用户群体。Eclipse Vert.x作为一个高效的响应式应用程序构建工具包,在云计算和响应式编程领域具有广泛的应用前景。为了满足Vert.x用户在华为云上的使用需求,提高华为云的市场竞争力,我们决定对Eclipse Vert.x进行华为云适配。
二、适配任务分析
1、部署vert.x应用,启动服务
2、访问vert.x服务端口,同时将访问数据落入GaussDB数据库
3、验证访问数据是否入库。
二、适配过程
1、开发并部署Vert.x应用
验证使用https://github.com/apache/servicecomb-fence这个工程作为基础,在工程中引入Vert.x接入sdk:
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>4.5.11</version>
</dependency>
同时,接收到消息之后需要落库,我们需要连接GaussDB,链接配置如下开发Vert.x的服务逻辑,使用端口8888
package org.apache.servicecomb.fence.resource;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.MultiMap;
import io.vertx.core.Promise;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MainVerticle extends AbstractVerticle {
@Autowired
private VertxResponseLogicService vertxResponseLogicService;
@Override
public void start(Promise<Void> startPromise) throws Exception {
// Create a Router
Router router = Router.router(vertx);
// Mount the handler for all incoming requests at every path and HTTP method
router.route().handler(context -> {
// Get the address of the request
String address = context.request().connection().remoteAddress().toString();
// Get the query parameter "name"
MultiMap queryParams = context.queryParams();
String name = queryParams.contains("name") ? queryParams.get("name") : "unknown";
// Write a json response
JsonObject jsonObject = new JsonObject()
.put("name", name)
.put("address", address)
.put("message", "Hello " + name + " connected from " + address);
int id = vertxResponseLogicService.insert(jsonObject.toString());
jsonObject.put("id",id);
context.json(
jsonObject
);
});
// Create the HTTP server
vertx.createHttpServer()
// Handle every request using the router
.requestHandler(router)
// Start listening
.listen(8888)
// Print the port on success
.onSuccess(server -> {
System.out.println("HTTP server started on port " + server.actualPort());
startPromise.complete();
})
// Print the problem on failure
.onFailure(throwable -> {
throwable.printStackTrace();
startPromise.fail(throwable);
});
}
}
3、部署并验证
打包工程后,上传到华为云的一台ECS上,然后启动工程中的5个服务。
访问Vert服务地址:http://IP:8888/?name=12323123123,会返回数据落库ID:
通过测试接口/api/resource/v1/responseInfo/getResponseInfoById?id=100,可以获取对应消息ID的具体落库信息:
三、交付件
(1) DEMO仓库地址: https://gitcode.com/uiu34/opensource-demo-vertx-20241120/overview
(2) DEMO开发提交记录: https://gitcode.com/uiu34/opensource-demo-vertx-20241120/commits/master
(3) 博客的地址: https://bbs.huaweicloud.cn/blogs/440209
四、华为云资源清单
1.1 ECS
产品名称 |
CPU架构 |
实例类型 |
公共镜像 |
镜像版本 |
弹性云服务器 |
鲲鹏计算 |
鲲鹏通用计算增强型 |
Huawei Cloud EulerOS |
Huawei Cloud EulerOS 2.0标准版 64位 ARM版(10GiB) |
1.2 GuassDB
产品名称 |
产品类型 |
数据库引擎版本 |
内核引擎版本 |
实例类型 |
部署形态 |
云数据库GaussDB |
基础版 |
GaussDB V2.0-8.201.0 |
505.2.0
|
集中式 |
1主2备 |
- 点赞
- 收藏
- 关注作者
评论(0)