Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
mqttsnet
thinglinks
提交
35475f65
thinglinks
项目概览
mqttsnet
/
thinglinks
通知
1
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
thinglinks
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
35475f65
编写于
11月 22, 2021
作者:
xiaonannet
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Link新增消费rocketmq消息
上级
6f717b7b
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
314 addition
and
248 deletion
+314
-248
mqtts-api/mqtts-api-link/pom.xml
mqtts-api/mqtts-api-link/pom.xml
+1
-0
mqtts-common/mqtts-common-rocketmq/pom.xml
mqtts-common/mqtts-common-rocketmq/pom.xml
+29
-0
mqtts-common/pom.xml
mqtts-common/pom.xml
+1
-0
mqtts-modules/mqtts-modules-broker/src/main/java/net/mqtts/broker/service/DeviceActionInterceptor.java
...ava/net/mqtts/broker/service/DeviceActionInterceptor.java
+125
-125
mqtts-modules/mqtts-modules-broker/src/main/java/net/mqtts/broker/service/DeviceDatasInterceptor.java
...java/net/mqtts/broker/service/DeviceDatasInterceptor.java
+123
-123
mqtts-modules/mqtts-modules-link/pom.xml
mqtts-modules/mqtts-modules-link/pom.xml
+7
-0
mqtts-modules/mqtts-modules-link/src/main/java/net/mqtts/link/common/enums/consumer/MqttsDeviceActionMessageConsumer.java
...mmon/enums/consumer/MqttsDeviceActionMessageConsumer.java
+28
-0
未找到文件。
mqtts-api/mqtts-api-link/pom.xml
浏览文件 @
35475f65
...
...
@@ -24,6 +24,7 @@
<artifactId>
mqtts-common-core
</artifactId>
<version>
${mqtts.version}
</version>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
...
...
mqtts-common/mqtts-common-rocketmq/pom.xml
0 → 100644
浏览文件 @
35475f65
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<groupId>
net.mqtts
</groupId>
<artifactId>
mqtts-common
</artifactId>
<version>
${mqtts.version}
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
mqtts-common-rocketmq
</artifactId>
<description>
mqtts-common-rocketmq消息服务
</description>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter -->
<dependency>
<groupId>
org.apache.rocketmq
</groupId>
<artifactId>
rocketmq-spring-boot-starter
</artifactId>
<version>
2.2.1
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
mqtts-common/pom.xml
浏览文件 @
35475f65
...
...
@@ -16,6 +16,7 @@
<module>
mqtts-common-security
</module>
<module>
mqtts-common-datascope
</module>
<module>
mqtts-common-datasource
</module>
<module>
mqtts-common-rocketmq
</module>
</modules>
<artifactId>
mqtts-common
</artifactId>
...
...
mqtts-modules/mqtts-modules-broker/src/main/java/net/mqtts/broker/service/DeviceActionInterceptor.java
浏览文件 @
35475f65
package
net.mqtts.broker.service
;
import
cn.hutool.core.date.LocalDateTimeUtil
;
import
io.github.quickmsg.common.channel.MqttChannel
;
import
io.github.quickmsg.common.config.Configuration
;
import
io.github.quickmsg.common.context.ReceiveContext
;
import
io.github.quickmsg.common.interceptor.Interceptor
;
import
io.github.quickmsg.common.interceptor.Invocation
;
import
io.github.quickmsg.common.message.HeapMqttMessage
;
import
io.github.quickmsg.common.message.SmqttMessage
;
import
io.github.quickmsg.common.rule.DslExecutor
;
import
io.github.quickmsg.common.utils.MessageUtils
;
import
io.netty.handler.codec.mqtt.*
;
import
lombok.extern.slf4j.Slf4j
;
import
net.mqtts.link.api.RemoteMqttsDeviceActionService
;
import
net.mqtts.link.api.RemoteMqttsDeviceService
;
import
net.mqtts.link.api.domain.MqttsDevice
;
import
net.mqtts.link.api.domain.MqttsDeviceAction
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* @Description: Mqtt 设备动作拦截处理
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/16$ 10:33$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/16$ 10:33$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Service
@Slf4j
@Component
public
class
DeviceActionInterceptor
implements
Interceptor
{
private
static
DeviceActionInterceptor
DeviceActionInterceptor
;
@Autowired
private
RemoteMqttsDeviceService
mqttsDeviceService
;
@Autowired
private
RemoteMqttsDeviceActionService
mqttsDeviceActionService
;
@PostConstruct
public
void
init
()
{
DeviceActionInterceptor
=
this
;
DeviceActionInterceptor
.
mqttsDeviceService
=
this
.
mqttsDeviceService
;
DeviceActionInterceptor
.
mqttsDeviceActionService
=
this
.
mqttsDeviceActionService
;
}
/**
* 拦截目标参数
*
* @param invocation {@link Invocation}
* @return Object
*/
@Override
public
Object
intercept
(
Invocation
invocation
)
{
try
{
MqttChannel
mqttChannel
=
(
MqttChannel
)
invocation
.
getArgs
()[
0
];
SmqttMessage
<
MqttMessage
>
smqttMessage
=
(
SmqttMessage
<
MqttMessage
>)
invocation
.
getArgs
()[
1
];
ReceiveContext
<
Configuration
>
mqttReceiveContext
=
(
ReceiveContext
<
Configuration
>)
invocation
.
getArgs
()[
2
];
DslExecutor
dslExecutor
=
mqttReceiveContext
.
getDslExecutor
();
MqttMessage
message
=
smqttMessage
.
getMessage
();
//TODO MQTT动作数据处理
List
<
MqttMessageType
>
mqttMessageType
=
Arrays
.
asList
(
MqttMessageType
.
PUBLISH
,
MqttMessageType
.
DISCONNECT
,
MqttMessageType
.
PINGRESP
,
MqttMessageType
.
SUBSCRIBE
,
MqttMessageType
.
UNSUBSCRIBE
);
if
(!
smqttMessage
.
getIsCluster
()
&&
mqttMessageType
.
contains
(
message
.
fixedHeader
().
messageType
()))
{
MqttPublishMessage
publishMessage
=
(
MqttPublishMessage
)
message
;
HeapMqttMessage
heapMqttMessage
=
this
.
clusterMessage
(
publishMessage
,
mqttChannel
,
smqttMessage
.
getTimestamp
());
MqttsDeviceAction
mqttsDeviceAction
=
new
MqttsDeviceAction
();
mqttsDeviceAction
.
setDevice_id
(
mqttChannel
.
getClientIdentifier
());
mqttsDeviceAction
.
setAction_type
(
message
.
fixedHeader
().
messageType
().
toString
());
mqttsDeviceAction
.
setStatus
(
message
.
decoderResult
().
toString
());
mqttsDeviceAction
.
setMessage
(
heapMqttMessage
.
getTopic
());
mqttsDeviceAction
.
setCreate_time
(
LocalDateTimeUtil
.
now
());
DeviceActionInterceptor
.
mqttsDeviceActionService
.
add
(
mqttsDeviceAction
);
DeviceActionInterceptor
.
mqttsDeviceService
.
updateConnectStatusByClientId
(
new
MqttsDevice
(
mqttChannel
.
getStatus
().
toString
(),
mqttChannel
.
getClientIdentifier
()));
}
// 拦截业务
return
invocation
.
proceed
();
// 放行
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 构建消息体
*
* @param message {@link MqttPublishMessage}
* @param timestamp
* @return {@link HeapMqttMessage}
*/
private
HeapMqttMessage
clusterMessage
(
MqttPublishMessage
message
,
MqttChannel
channel
,
long
timestamp
)
{
MqttPublishVariableHeader
header
=
message
.
variableHeader
();
MqttFixedHeader
fixedHeader
=
message
.
fixedHeader
();
return
HeapMqttMessage
.
builder
()
.
timestamp
(
timestamp
)
.
clientIdentifier
(
channel
.
getClientIdentifier
())
.
message
(
MessageUtils
.
copyReleaseByteBuf
(
message
.
payload
()))
.
topic
(
header
.
topicName
())
.
retain
(
fixedHeader
.
isRetain
())
.
qos
(
fixedHeader
.
qosLevel
().
value
())
.
build
();
}
/**
* 排序
* 值越大权重越高
*
* @return 排序
*/
@Override
public
int
sort
()
{
return
1
;
}
}
//
package net.mqtts.broker.service;
//
//
import cn.hutool.core.date.LocalDateTimeUtil;
//
import io.github.quickmsg.common.channel.MqttChannel;
//
import io.github.quickmsg.common.config.Configuration;
//
import io.github.quickmsg.common.context.ReceiveContext;
//
import io.github.quickmsg.common.interceptor.Interceptor;
//
import io.github.quickmsg.common.interceptor.Invocation;
//
import io.github.quickmsg.common.message.HeapMqttMessage;
//
import io.github.quickmsg.common.message.SmqttMessage;
//
import io.github.quickmsg.common.rule.DslExecutor;
//
import io.github.quickmsg.common.utils.MessageUtils;
//
import io.netty.handler.codec.mqtt.*;
//
import lombok.extern.slf4j.Slf4j;
//
import net.mqtts.link.api.RemoteMqttsDeviceActionService;
//
import net.mqtts.link.api.RemoteMqttsDeviceService;
//
import net.mqtts.link.api.domain.MqttsDevice;
//
import net.mqtts.link.api.domain.MqttsDeviceAction;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.stereotype.Component;
//
import org.springframework.stereotype.Service;
//
//
import javax.annotation.PostConstruct;
//
import java.util.Arrays;
//
import java.util.List;
//
/
//
**
//
* @Description: Mqtt 设备动作拦截处理
//
* @Author: ShiHuan Sun
//
* @E-mail: 13733918655@163.com
//
* @Website: http://mqtts.net
//
* @CreateDate: 2021/11/16$ 10:33$
//
* @UpdateUser: ShiHuan Sun
//
* @UpdateDate: 2021/11/16$ 10:33$
//
* @UpdateRemark: 修改内容
//
* @Version: 1.0
//
*/
//
@Service
//
@Slf4j
//
@Component
//
public class DeviceActionInterceptor implements Interceptor {
//
//
private static DeviceActionInterceptor DeviceActionInterceptor;
//
//
@Autowired
//
private RemoteMqttsDeviceService mqttsDeviceService;
//
//
@Autowired
//
private RemoteMqttsDeviceActionService mqttsDeviceActionService;
//
//
//
@PostConstruct
//
public void init() {
//
DeviceActionInterceptor = this;
//
DeviceActionInterceptor.mqttsDeviceService = this.mqttsDeviceService;
//
DeviceActionInterceptor.mqttsDeviceActionService = this.mqttsDeviceActionService;
//
}
//
//
/**
//
* 拦截目标参数
//
*
//
* @param invocation {@link Invocation}
//
* @return Object
//
*/
//
@Override
//
public Object intercept(Invocation invocation) {
//
try {
//
MqttChannel mqttChannel = (MqttChannel) invocation.getArgs()[0];
//
SmqttMessage<MqttMessage> smqttMessage = (SmqttMessage<MqttMessage>) invocation.getArgs()[1];
//
ReceiveContext<Configuration> mqttReceiveContext = (ReceiveContext<Configuration>) invocation.getArgs()[2];
//
DslExecutor dslExecutor = mqttReceiveContext.getDslExecutor();
//
MqttMessage message = smqttMessage.getMessage();
//
//TODO MQTT动作数据处理
//
List<MqttMessageType> mqttMessageType = Arrays.asList(MqttMessageType.PUBLISH, MqttMessageType.DISCONNECT, MqttMessageType.PINGRESP, MqttMessageType.SUBSCRIBE, MqttMessageType.UNSUBSCRIBE);
//
if (!smqttMessage.getIsCluster() && mqttMessageType.contains(message.fixedHeader().messageType())) {
//
MqttPublishMessage publishMessage = (MqttPublishMessage) message;
//
HeapMqttMessage heapMqttMessage = this.clusterMessage(publishMessage, mqttChannel, smqttMessage.getTimestamp());
//
MqttsDeviceAction mqttsDeviceAction = new MqttsDeviceAction();
//
mqttsDeviceAction.setDevice_id(mqttChannel.getClientIdentifier());
//
mqttsDeviceAction.setAction_type(message.fixedHeader().messageType().toString());
//
mqttsDeviceAction.setStatus(message.decoderResult().toString());
//
mqttsDeviceAction.setMessage(heapMqttMessage.getTopic());
//
mqttsDeviceAction.setCreate_time(LocalDateTimeUtil.now());
//
DeviceActionInterceptor.mqttsDeviceActionService.add(mqttsDeviceAction);
//
DeviceActionInterceptor.mqttsDeviceService.updateConnectStatusByClientId(new MqttsDevice(mqttChannel.getStatus().toString(), mqttChannel.getClientIdentifier()));
//
}
//
// 拦截业务
//
return invocation.proceed(); // 放行
//
} catch (Exception e) {
//
e.printStackTrace();
//
}
//
return null;
//
}
//
//
/**
//
* 构建消息体
//
*
//
* @param message {@link MqttPublishMessage}
//
* @param timestamp
//
* @return {@link HeapMqttMessage}
//
*/
//
private HeapMqttMessage clusterMessage(MqttPublishMessage message, MqttChannel channel, long timestamp) {
//
MqttPublishVariableHeader header = message.variableHeader();
//
MqttFixedHeader fixedHeader = message.fixedHeader();
//
return HeapMqttMessage.builder()
//
.timestamp(timestamp)
//
.clientIdentifier(channel.getClientIdentifier())
//
.message(MessageUtils.copyReleaseByteBuf(message.payload()))
//
.topic(header.topicName())
//
.retain(fixedHeader.isRetain())
//
.qos(fixedHeader.qosLevel().value())
//
.build();
//
}
//
//
/**
//
* 排序
//
* 值越大权重越高
//
*
//
* @return 排序
//
*/
//
@Override
//
public int sort() {
//
return 1;
//
}
//
}
mqtts-modules/mqtts-modules-broker/src/main/java/net/mqtts/broker/service/DeviceDatasInterceptor.java
浏览文件 @
35475f65
package
net.mqtts.broker.service
;
import
cn.hutool.core.date.LocalDateTimeUtil
;
import
io.github.quickmsg.common.channel.MqttChannel
;
import
io.github.quickmsg.common.config.Configuration
;
import
io.github.quickmsg.common.context.ReceiveContext
;
import
io.github.quickmsg.common.interceptor.Interceptor
;
import
io.github.quickmsg.common.interceptor.Invocation
;
import
io.github.quickmsg.common.message.HeapMqttMessage
;
import
io.github.quickmsg.common.message.SmqttMessage
;
import
io.github.quickmsg.common.rule.DslExecutor
;
import
io.github.quickmsg.common.utils.MessageUtils
;
import
io.netty.handler.codec.mqtt.*
;
import
lombok.extern.slf4j.Slf4j
;
import
net.mqtts.link.api.RemoteMqttsDeviceDatasService
;
import
net.mqtts.link.api.domain.MqttsDeviceDatas
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
/**
* @Description: mqtt消息拦截处理
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/19$ 21:25$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/19$ 21:25$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Service
@Slf4j
@Component
public
class
DeviceDatasInterceptor
implements
Interceptor
{
private
static
DeviceDatasInterceptor
DeviceDatasInterceptor
;
@Autowired
private
RemoteMqttsDeviceDatasService
remoteMqttsDeviceDatasService
;
@PostConstruct
public
void
init
()
{
DeviceDatasInterceptor
=
this
;
DeviceDatasInterceptor
.
remoteMqttsDeviceDatasService
=
this
.
remoteMqttsDeviceDatasService
;
}
/**
* 拦截目标参数
*
* @param invocation {@link Invocation}
* @return Object
*/
@Override
public
Object
intercept
(
Invocation
invocation
)
{
try
{
MqttChannel
mqttChannel
=
(
MqttChannel
)
invocation
.
getArgs
()[
0
];
SmqttMessage
<
MqttMessage
>
smqttMessage
=
(
SmqttMessage
<
MqttMessage
>)
invocation
.
getArgs
()[
1
];
ReceiveContext
<
Configuration
>
mqttReceiveContext
=
(
ReceiveContext
<
Configuration
>)
invocation
.
getArgs
()[
2
];
DslExecutor
dslExecutor
=
mqttReceiveContext
.
getDslExecutor
();
MqttMessage
message
=
smqttMessage
.
getMessage
();
//TODO 发布消息类型处理(业务数据)
if
(!
smqttMessage
.
getIsCluster
()
&&
message
instanceof
MqttPublishMessage
&&
message
.
fixedHeader
().
messageType
()
==
MqttMessageType
.
PUBLISH
)
{
MqttPublishMessage
publishMessage
=
(
MqttPublishMessage
)
message
;
HeapMqttMessage
heapMqttMessage
=
this
.
clusterMessage
(
publishMessage
,
mqttChannel
,
smqttMessage
.
getTimestamp
());
log
.
info
(
"Topic->{}"
+
heapMqttMessage
.
getTopic
()
+
"Message->{}"
+
new
String
(
heapMqttMessage
.
getMessage
()));
MqttsDeviceDatas
mqttsDeviceDatas
=
new
MqttsDeviceDatas
();
mqttsDeviceDatas
.
setDevice_id
(
heapMqttMessage
.
getClientIdentifier
());
mqttsDeviceDatas
.
setTopic
(
heapMqttMessage
.
getTopic
());
mqttsDeviceDatas
.
setMessage_id
(
String
.
valueOf
(
heapMqttMessage
.
getTimestamp
()));
mqttsDeviceDatas
.
setMessage
(
new
String
(
heapMqttMessage
.
getMessage
(),
"UTF-8"
).
trim
());
mqttsDeviceDatas
.
setStatus
(
message
.
decoderResult
().
toString
());
mqttsDeviceDatas
.
setCreate_time
(
LocalDateTimeUtil
.
now
());
DeviceDatasInterceptor
.
remoteMqttsDeviceDatasService
.
add
(
mqttsDeviceDatas
);
/* if (mqttReceiveContext.getConfiguration().getClusterConfig().isEnable()) {
mqttReceiveContext.getClusterRegistry().spreadPublishMessage(heapMqttMessage).subscribeOn(Schedulers.boundedElastic()).subscribe();
}
if (dslExecutor.isExecute()) {
dslExecutor.executeRule(mqttChannel, heapMqttMessage, mqttReceiveContext);
}*/
}
return
invocation
.
proceed
();
// 放行
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 构建消息体
*
* @param message {@link MqttPublishMessage}
* @param timestamp
* @return {@link HeapMqttMessage}
*/
private
HeapMqttMessage
clusterMessage
(
MqttPublishMessage
message
,
MqttChannel
channel
,
long
timestamp
)
{
MqttPublishVariableHeader
header
=
message
.
variableHeader
();
MqttFixedHeader
fixedHeader
=
message
.
fixedHeader
();
return
HeapMqttMessage
.
builder
()
.
timestamp
(
timestamp
)
.
clientIdentifier
(
channel
.
getClientIdentifier
())
.
message
(
MessageUtils
.
copyReleaseByteBuf
(
message
.
payload
()))
.
topic
(
header
.
topicName
())
.
retain
(
fixedHeader
.
isRetain
())
.
qos
(
fixedHeader
.
qosLevel
().
value
())
.
build
();
}
/**
* 排序
* 值越大权重越高
*
* @return 排序
*/
@Override
public
int
sort
()
{
return
0
;
}
}
//
package net.mqtts.broker.service;
//
//
import cn.hutool.core.date.LocalDateTimeUtil;
//
import io.github.quickmsg.common.channel.MqttChannel;
//
import io.github.quickmsg.common.config.Configuration;
//
import io.github.quickmsg.common.context.ReceiveContext;
//
import io.github.quickmsg.common.interceptor.Interceptor;
//
import io.github.quickmsg.common.interceptor.Invocation;
//
import io.github.quickmsg.common.message.HeapMqttMessage;
//
import io.github.quickmsg.common.message.SmqttMessage;
//
import io.github.quickmsg.common.rule.DslExecutor;
//
import io.github.quickmsg.common.utils.MessageUtils;
//
import io.netty.handler.codec.mqtt.*;
//
import lombok.extern.slf4j.Slf4j;
//
import net.mqtts.link.api.RemoteMqttsDeviceDatasService;
//
import net.mqtts.link.api.domain.MqttsDeviceDatas;
//
import org.springframework.beans.factory.annotation.Autowired;
//
import org.springframework.stereotype.Component;
//
import org.springframework.stereotype.Service;
//
//
import javax.annotation.PostConstruct;
//
/
//
**
//
* @Description: mqtt消息拦截处理
//
* @Author: ShiHuan Sun
//
* @E-mail: 13733918655@163.com
//
* @Website: http://mqtts.net
//
* @CreateDate: 2021/11/19$ 21:25$
//
* @UpdateUser: ShiHuan Sun
//
* @UpdateDate: 2021/11/19$ 21:25$
//
* @UpdateRemark: 修改内容
//
* @Version: 1.0
//
*/
//
@Service
//
@Slf4j
//
@Component
//
public class DeviceDatasInterceptor implements Interceptor {
//
//
private static DeviceDatasInterceptor DeviceDatasInterceptor;
//
//
@Autowired
//
private RemoteMqttsDeviceDatasService remoteMqttsDeviceDatasService;
//
//
//
@PostConstruct
//
public void init() {
//
DeviceDatasInterceptor = this;
//
DeviceDatasInterceptor.remoteMqttsDeviceDatasService = this.remoteMqttsDeviceDatasService;
//
}
//
//
/**
//
* 拦截目标参数
//
*
//
* @param invocation {@link Invocation}
//
* @return Object
//
*/
//
@Override
//
public Object intercept(Invocation invocation) {
//
try {
//
MqttChannel mqttChannel = (MqttChannel) invocation.getArgs()[0];
//
SmqttMessage<MqttMessage> smqttMessage = (SmqttMessage<MqttMessage>) invocation.getArgs()[1];
//
ReceiveContext<Configuration> mqttReceiveContext = (ReceiveContext<Configuration>) invocation.getArgs()[2];
//
DslExecutor dslExecutor = mqttReceiveContext.getDslExecutor();
//
MqttMessage message = smqttMessage.getMessage();
//
//TODO 发布消息类型处理(业务数据)
//
if (!smqttMessage.getIsCluster() && message instanceof MqttPublishMessage && message.fixedHeader().messageType() == MqttMessageType.PUBLISH) {
//
MqttPublishMessage publishMessage = (MqttPublishMessage) message;
//
HeapMqttMessage heapMqttMessage = this.clusterMessage(publishMessage, mqttChannel, smqttMessage.getTimestamp());
//
log.info("Topic->{}" + heapMqttMessage.getTopic() + "Message->{}" + new String(heapMqttMessage.getMessage()));
//
MqttsDeviceDatas mqttsDeviceDatas = new MqttsDeviceDatas();
//
mqttsDeviceDatas.setDevice_id(heapMqttMessage.getClientIdentifier());
//
mqttsDeviceDatas.setTopic(heapMqttMessage.getTopic());
//
mqttsDeviceDatas.setMessage_id(String.valueOf(heapMqttMessage.getTimestamp()));
//
mqttsDeviceDatas.setMessage(new String(heapMqttMessage.getMessage(), "UTF-8").trim());
//
mqttsDeviceDatas.setStatus(message.decoderResult().toString());
//
mqttsDeviceDatas.setCreate_time(LocalDateTimeUtil.now());
//
DeviceDatasInterceptor.remoteMqttsDeviceDatasService.add(mqttsDeviceDatas);
//
/* if (mqttReceiveContext.getConfiguration().getClusterConfig().isEnable()) {
//
mqttReceiveContext.getClusterRegistry().spreadPublishMessage(heapMqttMessage).subscribeOn(Schedulers.boundedElastic()).subscribe();
//
}
//
if (dslExecutor.isExecute()) {
//
dslExecutor.executeRule(mqttChannel, heapMqttMessage, mqttReceiveContext);
//
}*/
//
}
//
return invocation.proceed(); // 放行
//
} catch (Exception e) {
//
e.printStackTrace();
//
}
//
return null;
//
}
//
//
//
/**
//
* 构建消息体
//
*
//
* @param message {@link MqttPublishMessage}
//
* @param timestamp
//
* @return {@link HeapMqttMessage}
//
*/
//
private HeapMqttMessage clusterMessage(MqttPublishMessage message, MqttChannel channel, long timestamp) {
//
MqttPublishVariableHeader header = message.variableHeader();
//
MqttFixedHeader fixedHeader = message.fixedHeader();
//
return HeapMqttMessage.builder()
//
.timestamp(timestamp)
//
.clientIdentifier(channel.getClientIdentifier())
//
.message(MessageUtils.copyReleaseByteBuf(message.payload()))
//
.topic(header.topicName())
//
.retain(fixedHeader.isRetain())
//
.qos(fixedHeader.qosLevel().value())
//
.build();
//
}
//
//
/**
//
* 排序
//
* 值越大权重越高
//
*
//
* @return 排序
//
*/
//
@Override
//
public int sort() {
//
return 0;
//
}
//
}
mqtts-modules/mqtts-modules-link/pom.xml
浏览文件 @
35475f65
...
...
@@ -89,6 +89,13 @@
<version>
${mqtts.version}
</version>
</dependency>
<!-- mqtts Common Rocketmq -->
<dependency>
<groupId>
net.mqtts
</groupId>
<artifactId>
mqtts-common-rocketmq
</artifactId>
<version>
${mqtts.version}
</version>
</dependency>
<dependency>
<groupId>
net.mqtts
</groupId>
<artifactId>
mqtts-api-link
</artifactId>
...
...
mqtts-modules/mqtts-modules-link/src/main/java/net/mqtts/link/common/enums/consumer/MqttsDeviceActionMessageConsumer.java
0 → 100644
浏览文件 @
35475f65
package
net.mqtts.link.common.enums.consumer
;
import
org.apache.rocketmq.spring.annotation.RocketMQMessageListener
;
import
org.apache.rocketmq.spring.core.RocketMQListener
;
import
org.springframework.stereotype.Component
;
/**
* @Description: Mqtt动作消息消费(Rocketmq模式)
* @Author: ShiHuan Sun
* @E-mail: 13733918655@163.com
* @Website: http://mqtts.net
* @CreateDate: 2021/11/22$ 16:11$
* @UpdateUser: ShiHuan Sun
* @UpdateDate: 2021/11/22$ 16:11$
* @UpdateRemark: 修改内容
* @Version: 1.0
*/
@Component
@RocketMQMessageListener
(
consumerGroup
=
"mqtts"
,
topic
=
"mqtts"
)
public
class
MqttsDeviceActionMessageConsumer
implements
RocketMQListener
{
@Override
public
void
onMessage
(
Object
message
)
{
assert
message
!=
null
;
System
.
out
.
println
(
"Link消费消息"
+
message
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录