# 延时队列集群
**Repository Path**: HG_TYF/delayqueue-cluster
## Basic Information
- **Project Name**: 延时队列集群
- **Description**: 这是一个延时队列集群,通过本地文件持久化队列数据,定时清理本地文件中已完成的任务,重启后可从本地文件恢复队列数据到内存。队列执行节点可以部署到多台服务器上,通过主节点将任务分发到任意一个执行节点,执行节点之间互相不受干扰。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2023-11-08
- **Last Updated**: 2023-11-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 项目说明
## 项目背景
通常情况下,延时队列只能在单台服务器内存中对任务队列进行排序和拉取,但单台服务器内存有限,数据量大了服务器内存容易撑爆。 为了分担服务器压力,故写此项目,目的是为了让延时队列能方便地部署到多台服务器上,并且互不干扰。
## delayqueue-registry
注册中心模块,delayqueue-core模块上线后注册中心会返回所有master节点列表,以供delayqueue-core去连接master节点
## delayqueue-core
- 核心逻辑模块,主要包含队列数据、队列执行、持久化、恢复,可以部署到多台服务器上以形成集群,节点之间互相不受干扰。
- 与delayqueue-master通过netty通讯,断线后会自动重连
- 通过DelayQueueCoreApplication类启动
- 可以在com.delayqueue.core.executor.impl包中创建类,遵循约定优于配置的原则,类名必须以Executor结尾,实现com.delayqueue.core.executor.Executor接口,用于写自己的业务逻辑
### application.yml配置说明
``` lua
permanent
├── enabled -- 是否开启持久化
├── async -- 是否异步刷盘
├── dataDir -- 持久化目录
├── archive -- 是否开启归档
├── archiveMaxFileSize -- 单个归档文件大小,单位 KB
└──cleanTaskInterval -- 垃圾清理频率,单位 分钟
netty
├── mster
└──├──host -- master的ip地址
└──port -- master的端口
```
## delayqueue-master
通过DelayQueueMasterApplication类启动
与多个delayqueue-core通过netty通讯,将外部传过来的任务数据通过轮询的方式分发到任意一个delayqueue-core节点
可通过IndexController的createTask接口传入任务数据
可通过IndexController的deleteTask接口删除队列中的任务
### application.yml配置说明
``` lua
netty
└── mster
└──port -- netty的端口
iptable
└──whiteList -- ip白名单,多个ip用空格隔开。不在此ip白名单内的试图连接会自动掉线
```
## delayqueue-common
任务类、常量、枚举等
### ExecutorType类说明
每一个枚举一一对应delayqueue-core模块的com.delayqueue.core.executor.impl包下的类的名称前缀(去掉Executor后缀)