# dbmq-spring-boot-starter
**Repository Path**: kenewstar/dbmq-spring-boot-starter
## Basic Information
- **Project Name**: dbmq-spring-boot-starter
- **Description**: 一个去中心化的基于数据库的消息队列组件
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-09-26
- **Last Updated**: 2024-10-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# dbmq-spring-boot-starter
#### 介绍
一个去中心化的基于数据库的消息队列组件
#### DbMq入门
> 当前支持MySQL、Mongo数据库,默认使用MySQL数据库
1. pom.xml依赖引入
```xml
io.gitee.kenewstar
dbmq-spring-boot-starter
1.0
```
2. 创建消费者
```java
import io.gitee.kenewstar.dbmq.DbMqConsumer;
import io.gitee.kenewstar.dbmq.DbMqConsumerInf;
import io.gitee.kenewstar.dbmq.Message;
import java.util.List;
/**
* @author kenewstar
*/
@DbMqConsumer(topic = "mq_demo_test")
public class DemoConsumer implements DbMqConsumerInf {
@Override
public void consume(List list) {
System.out.println(list.size());
}
}
```
3. 引入生产者发送消息
```java
import cn.hutool.core.lang.UUID;
import io.gitee.kenewstar.dbmq.DbMqMessageProducer;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @author kenewstar
*/
@RestController
@RequestMapping("mq")
public class ProducerController {
@Resource
private DbMqMessageProducer messageProducer;
@GetMapping("/send")
public void sendMessage(String topic) {
List msg = new ArrayList<>();
for (int i = 0; i < 758; i++) {
msg.add("{\"demo\": \" "+ UUID.randomUUID() +" \"}");
}
messageProducer.sendMessage(topic, msg);
}
}
```
当springboot启动后即可通过接口发送消息数据,接着控制台将打印消费的数据
#### 使用MySQL数据库
完整的pom.xml
```xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.7.14
io.gitee.kenewstar
springboot-dbmq
1.0
8
8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
5.1.49
io.gitee.kenewstar
dbmq-spring-boot-starter
1.0
```
> 或者不引入springboot-jdbc,只需要将DataSource对象交给Spring管理即可
修改application.yml文件
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&useTimezone=true&serverTimezone=Asia/Shanghai
username: root
password: kenewstar
driver-class-name: com.mysql.jdbc.Driver
db-mq:
type: mysql # 默认值可以不配置
heartbeatInterval: 120000 # 默认值可以不配置
```
#### 使用Mongo数据库
完整的pom.xml
```xml
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.7.14
io.gitee.kenewstar
springboot-dbmq
1.0
8
8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-mongodb
io.gitee.kenewstar
dbmq-spring-boot-starter
1.0
```
修改application.yml文件
```yaml
spring:
data:
mongodb:
host: 127.0.0.1
port: 27017
database: dbmq
db-mq:
type: mongo
heartbeatInterval: 120000
```