KitDelay
KitDelay 是使用KitDB为底层研发的一款延迟队列。KitDelay可以单节点使用,也可建立多节点强一致性的集群
开始
GET IT
GitHub
参数说明
JVM参数
参数 | 说明 | 示例 |
---|---|---|
服务端口号 | 对外服务的端口号 | -Dserver.port=9000 |
程序参数
参数 | 说明 | 示例 |
---|---|---|
参数1 | raft存储目录 | /data/raft |
参数2 | 本机节点配置 ip+port | 192.168.0.2:8081 |
参数3 | 集群配置 多个 ip+port | 192.168.0.3:8081,192.168.0.4:8081,192.168.0.2:8081 |
参数4 | KitDB存储目录 | /data/kitdb |
参数5 | 启动模式 | def:多节点 standalone:独立 |
启动
java -jar -Dserver.port=#服务端口号# KitDelay.jar #参数1# #参数2# #参数3# #参数4# #参数5#
多节点
多节点模式应至少保证3个节点
java -jar -Dserver.port=9000 KitDelay.jar /data/raft 192.168.0.3:8081 192.168.0.3:8081,192.168.0.4:8081,192.168.0.2:8081 /data/kitdb def
单节点
单节点模式下,前三个参数用任意字符代替
java -jar -Dserver.port=9000 KitDelay.jar x x x /data/kitdb standalone
API
格式
请求
请求采用 HTTP请求
GET
GET /pop?limit=100&group=test&key=test
POST
POST /add?key=test
Content-Type: application/json
{
"id": "f20eb733-a7b5-4a52-8bc8-202859609f65",
"data": "{\"task\":\"do some\",\"num\":10081}",
"millisecond": 6000,
"group":"test"
}
返回
{
"errno": 0,
"errmsg": null,
"data": ""
}
参数 | 说明 |
---|---|
errno | 错误码 0:正确 非0:错误 |
errmsg | 错误信息 |
data | 返回数据 |
重定向
写操作和部分节点管理操作只能在Leader节点执行,当操作节点不是Leader节点时,会如下返回,这是需要客户端重定向请求
{
"errno": 699, // 需要重定向的状态码
"errmsg": "not leader,need redirect",
"data": "192.168.0.3" //重定向地址
}
认证
请求时在URL加上参数 key=test
如需修改,可在Jar包中的\BOOT-INF\classes\application.properties 中修改
数据接口
添加消息
POST /add?key=test
Content-Type: application/json
{
"id": "f20eb733-a7b5-4a52-8bc8-202859609f65",
"data": "{\"task\":\"do some\",\"num\":10081}",
"millisecond": 6000,
"group":"test"
}
参数 | 说明 |
---|---|
id | 消息的ID |
data | 消息的数据 |
millisecond | 消息的延迟时间(毫秒) |
group | 分组 |
如果ID已存在,将会修改已有的消息延迟时间和数据
获取到期的任务
GET /pop?limit=100&group=test&key=test
{
"errno": 0,
"errmsg": null,
"data": [{
"group": "test",
"id": "f20eb733-a7b5-4a52-8bc8-202859609f65",
"data": "{\"task\":\"do some\",\"num\":10081}",
"millisecond": 1574915598686
},
{
"group": "test",
"id": "d1899359-8068-4597-b224-17d93f67f4b5",
"data": "{\"task\":\"do some 2\",\"num\":102081}",
"millisecond": 1574915625772
}
]
}
参数 | 说明 |
---|---|
limit | 每次请求最多返回数 |
group | 分组 |
批量添加消息
POST /adds?key=test
Content-Type: application/json
[
{
"id": "f20eb733-a7b5-4a52-8bc8-202859609f65",
"data": "{\"task\":\"do some\",\"num\":10081}",
"millisecond": 6000,
"group":"test"
}
]
查询到期的任务
只查询,消息不会被删除
GET /pop?limit=100&group=test&key=test
查询某个任务的到期时间
GET /queryTime?id=1f20eb733-a7b5-4a52&group=test&key=test
集群管理接口
查询Leader节点IP
GET /leader?key=test HTTP/1.1
查询所有节点
GET /getNodes?key=test HTTP/1.1
添加节点
GET /addNode?key=test&node=192.168.0.10:8081 HTTP/1.1
移除节点
GET /removeNode?key=test&node=192.168.0.10:8081 HTTP/1.1