当前位置: 首页 > 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/a/308315.html

相关文章:

  • 1.两数之和-力扣(LeetCode)
  • 缓存与数据库不一致的解决方案:深入理解与实践
  • 【数据结构与算法】第12课—数据结构之归并排序
  • 数字孪生在智慧能源项目中的关键作用,你了解多少?
  • Django基础用法+Demo演示
  • Vue 3 介绍及应用
  • 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 编辑器设置中文
  • 对称密码中的密钥是如何实现安全配送的?