我是靠谱客的博主 潇洒音响,这篇文章主要介绍分享个简单可用的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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复