当前位置: 首页 > article >正文

Vert.x初探

Eclipse Vert.x是一个用于在JVM上构建主动应用程序的工具包。随着工作量的增加,主动应用程序都是可扩展的,当出现故障时也会恢复。主动应用程序具有响应性,因为它通过有效使用系统资源和保护自身免受错误的影响来控制系统。

Vert.x由一个庞大的生态系统支持,其中包含编写现代服务时所需的任何东西:一个复杂的网络堆栈、实时数据库驱动器、消息、事件流、摘要、矩阵、争议追踪等。

这个框架在国外流行度很高,支持mqtt,http,websocket等多种应用。

这里是一个MQTT客户端的例子。

Maven引入:

<vertx.version>4.5.9</vertx.version>
<dependency>
    <groupId>io.vertx</groupId>
    <artifactId>vertx-mqtt</artifactId>
    <version>${vertx.version}</version>
</dependency>
package com.example.demo.vertx;

import io.netty.handler.codec.mqtt.MqttQoS;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.mqtt.MqttClient;
import io.vertx.mqtt.MqttClientOptions;
import lombok.extern.slf4j.Slf4j;


@Slf4j
public class MqttClientVerticle extends AbstractVerticle {
    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        vertx.deployVerticle(MqttClientVerticle.class.getName());
    }

    @Override
    public void start() throws Exception {
        MqttClientOptions options = new MqttClientOptions().setUsername("admin").setPassword("admin")
                .setAutoKeepAlive(true);

        MqttClient mqttClient = MqttClient.create(vertx, options);

        mqttClient.connect(1883, "127.0.0.1", ar -> {
            if (ar.succeeded()) {
                System.out.println("Connected to the MQTT broker");

                // 订阅主题
                mqttClient.subscribe("/cmd/A99", 0, subAck -> {
                    if (subAck.succeeded()) {
                        System.out.println("Subscribed to topic");
                    } else {
                        System.err.println("Failed to subscribe to topic");
                    }
                }).publishHandler(s -> {
                    System.out.println("There are new message in topic: " + s.topicName());
                    System.out.println("Content(as string) of the message: " + s.payload().toString());
                    System.out.println("QoS: " + s.qosLevel());
                });

                // 发布消息
                mqttClient.publish("/dev/response", Buffer.buffer("Hello, MQTT!"), MqttQoS.AT_LEAST_ONCE, false, false, pubAck -> {
                    if (pubAck.succeeded()) {
                        System.out.println("Message published");
                    } else {
                        System.err.println("Failed to publish message");
                    }
                });
            } else {
                System.err.println("Failed to connect to the MQTT broker");
            }
        });


    }

}


http://www.kler.cn/news/308315.html

相关文章:

  • react native(expo)选择图片/视频并上传阿里云oss
  • Java数据存储结构——二叉查找树
  • 在linux注册服务并开机启动springboot程序
  • 使用canal.deployer-1.1.7和canal.adapter-1.1.7实现mysql数据同步
  • 探索轻量级语言模型 GPT-4O-mini 的无限可能
  • 面试常见题之PG数据库
  • 【工作流集成】springboot+vue工作流审批系统(实际源码)
  • 大数据之spark算子简介
  • SSM 框架 个人使用习惯 详细
  • vue3 + vite2 vue 打包后router-view空白
  • 用最新方案为数据密集型AI供能:将服务器农场沉入旧金山湾
  • 【YashanDB知识库】数据库获取时间和服务器时间不一致
  • Facebook的虚拟现实功能简介:社交网络的新前沿
  • 腾讯地图SDK Android版开发 11 覆盖物示例 4 线
  • 什么是蜘蛛池?有什么作用
  • 【原创】java+swing+mysql长途客车售票管理系统设计与实现
  • CACTI 0.8.7 迁移并升级到 1.2.7记录
  • 【零散技术】详解Odoo17邮件发送(一)
  • Unity 编辑器设置中文
  • 对称密码中的密钥是如何实现安全配送的?
  • 【数据结构】快速排序详解(递归版本)
  • 初始爬虫7
  • 时间安全精细化管理平台存在未授权访问漏洞
  • 项目管理 | 一文读懂什么是敏捷开发管理
  • Zotero使用(一)PDF文件导入不会自动识别
  • 3C认证---GB 4706.1-2005
  • 【Java EE】冯·诺依曼体系结构及其在 JavaEE 中的应用
  • systemctl控制服务和守护进程
  • Redis——常用数据类型set
  • nginx服务器安装和部署代理