数据持久化
quickmsg
# 持久化接口
- 接口:
io.github.quickmsg.common.message.MessageRegistry
主要提供 session消息 && 保留消息的持久化
方法 | 说明 |
---|---|
List< SessionMessage> getSessionMessages(String clientIdentifier) | 获取连接下线后的session消息 |
void saveSessionMessages(SessionMessage sessionMessage) | 保存连接下线后的session消息 |
void saveRetainMessage(RetainMessage retainMessage) | 保留Topic保留消息 |
List< RetainMessage> getRetainMessage(String topic) | 获取Topic保留消息 |
# 使用数据库去存储session/保留消息
- 引入DB依赖
<dependency>
<groupId>io.github.quickmsg</groupId>
<artifactId>smqtt-persistent-db</artifactId>
<version>${Latest version}</version>
</dependency>
1
2
3
4
5
6
2
3
4
5
6
- 引入驱动依赖
根据版本引入 mysql/pg/oracle等驱动依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
1
2
3
4
5
2
3
4
5
- 服务启动时config.yaml 配置参数
smqtt:
db: # 配置参考https://github.com/brettwooldridge/HikariCP/wiki/MySQL-Configuration
jdbcUrl: jdbc:mysql://localhost:3306/smqtt
username: root
password: 123
dataSourceCachePrepStmts: false
dataSourcePrepStmtCacheSize: 250
dataSourcePrepStmtCacheSqlLimit: 2048
dataSourceUseServerPrepStmts: true
dataSourceUseLocalSessionState: true
dataSourceRewriteBatchedStatements: true
dataSourceCacheResultSetMetadata: true
dataSourceCacheServerConfiguration: true
dataSourceElideSetAutoCommits: true
dataSourceMaintainTimeStats: false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- 启动服务后会自动生成session表跟retain表
# 使用Redis去存储session/保留消息
- 引入依赖
<dependency>
<groupId>io.github.quickmsg</groupId>
<artifactId>smqtt-persistent-redis</artifactId>
<version>${Latest version}</version>
</dependency>
1
2
3
4
5
2
3
4
5
- config.yaml 配置参数
smqtt:
redis: # redis 请参考 https://doc.smqtt.cc/%E5%85%B6%E4%BB%96/1.store.html 【如果没有引入相关依赖请移除此配置】
mode: single
database: 0
password:
timeout: 3000
poolMinIdle: 8
poolConnTimeout: 3000
poolSize: 10
single:
address: 127.0.0.1:6379
cluster:
scanInterval: 1000
nodes: 127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003,127.0.0.1:7004,127.0.0.1:7005
readMode: SLAVE
retryAttempts: 3
slaveConnectionPoolSize: 64
masterConnectionPoolSize: 64
retryInterval: 1500
sentinel:
master: mymaster
nodes: 127.0.0.1:26379,127.0.0.1:26379,127.0.0.1:26379
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 自定义实现持久化
resources/META-INF/services 目录下新建
名为io.github.quickmsg.common.message.MessageRegistry
文件,
将自定义实现类全限定名写入文件中即可完成注入。