我是靠谱客的博主 潇洒音响,最近开发中收集的这篇文章主要介绍分享个简单可用的spring boot + empx 组件库(亲测可用)mqtt-spring-boot-starter,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

github 地址:   https://github.com/tocrhz/mqtt-spring-boot-starter

(PS:转自github 原作者的页面 )

mqtt-spring-boot-starter

MQTT starter for Spring Boot, easier to use.

Support spring boot version: 1.5.x ~ 2.4.0

This document is machine translated.

1. maven 导入

<dependency>
    <groupId>com.github.tocrhz</groupId>
    <artifactId>mqtt-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>

2. 在application.properties中添加配置

  

mqtt.uri=tcp://127.0.0.1:1883  //mqtt服务器地址
mqtt.client-id=default_client  //可以随便填,但要保持唯一性
mqtt.username=username         //填自己的
mqtt.password=password         //填自己的

//若使用了集群,可以增加下面的配置,若只是用单机,则可把下面注释掉
mqtt.clients.multi_client_1.uri=tcp://127.0.0.1:1883
mqtt.clients.multi_client_1.username=username
mqtt.clients.multi_client_1.password=password
mqtt.clients.multi_client_2.uri=tcp://127.0.0.1:1883
mqtt.clients.multi_client_2.username=username
mqtt.clients.multi_client_2.password=password

3. 使用

订阅

在方法上添加 @MqttSubscribe 注解即可

例子:

@Component
public class MqttMessageHandler {
    
    /**
     * topic = test/+
     *  topic采用的正则表达式
     *   payload一般是json 对象
     */
    @MqttSubscribe("test/+")
    public void sub(String topic, MqttMessage message, @Payload String payload) {
        logger.info("receive from    : {}", topic);
        logger.info("message payload : {}", new String(message.getPayload(), StandardCharsets.UTF_8));
        logger.info("string payload  : {}", payload);
    }

    /**当有多个客户端时,可以指定订阅哪个客户端的主题
     * clientId = multi_client_1
     * topic = test/+
     */
    @MqttSubscribe(value = "test/+", clients = "multi_client_1")
    public void sub(String topic, MqttMessage message, @Payload String payload) {
        logger.info("receive from    : {}", topic);
        logger.info("message payload : {}", new String(message.getPayload(), StandardCharsets.UTF_8));
        logger.info("string payload  : {}", payload);
    }

    /**
     * subscribe = $queue/test/+
     * topic = test/+
     * pattern = ^test/([^/]+)$
     */
    @MqttSubscribe(value="test/{id}", shared=true)
    public void sub(String topic, @NamedValue("id") String id, @Payload String userInfo) {
        logger.info("receive from   : {}", topic);
        logger.info("named value id : {}", id);
        logger.info("object payload : {}", userInfo);
    }

}

publish

Just inject MqttPublisher and call the send method.

e.g.

@Component
public class DemoService {

    private final MqttPublisher publisher;

    public DemoService(MqttPublisher publisher) {
        this.publisher = publisher;
    }

    public void sendTest(){
        publisher.send("test/send", "test message, default QOS is 0.");
       
    }
}

//更多请看官网

最后

以上就是潇洒音响为你收集整理的分享个简单可用的spring boot + empx 组件库(亲测可用)mqtt-spring-boot-starter的全部内容,希望文章能够帮你解决分享个简单可用的spring boot + empx 组件库(亲测可用)mqtt-spring-boot-starter所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部