完善:zhub快速上手页面
This commit is contained in:
parent
5fbc3082c7
commit
4c55967ce2
3
.gitignore
vendored
3
.gitignore
vendored
@ -3,3 +3,6 @@
|
|||||||
/.idea/
|
/.idea/
|
||||||
/*.sh
|
/*.sh
|
||||||
*.iml
|
*.iml
|
||||||
|
/build
|
||||||
|
package-lock.json
|
||||||
|
publish.bat
|
||||||
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
273
docs/intro.md
273
docs/intro.md
@ -2,47 +2,75 @@
|
|||||||
sidebar_position: 1
|
sidebar_position: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
# 快速开始
|
# ZHub 快速上手
|
||||||
|
|
||||||
让我们在 **5分钟内完成 zhub 组件安装**.
|
## 概述
|
||||||
|
> zhub是⼀个⾼性能事件发布订阅服务组件,功能丰富,包含发布-订阅、⼴播消息、延时消息、
|
||||||
|
Rpc调⽤、分布式定时调度、分布式锁,运⾏包仅有1M+;低服务资源消费,初始启动内存 10M-。
|
||||||
|
|
||||||
## 开始
|

|
||||||
|
|
||||||
从零开始 **搭建 zhub 服务**.
|
---
|
||||||
|
|
||||||
|
## 开始 搭建 zhub 服务
|
||||||
|
> 让我们在 **5到10分钟内完成 zhub 中间件安装、集成、测试**.
|
||||||
|
|
||||||
### 下载软件包
|
### 下载软件包
|
||||||
|
|
||||||
- [zhub.zip](https://baidu.com) 包含以下内容:
|
- [zhub.zip (点击下载)](https://img.1216.top/docs/zhub/zhub.zip) 包含以下内容:
|
||||||
- 绿色版本 Window 和 Linux 运行包
|
- `zhub-client-0.1.1.dev.jar` 常规Java 项目驱动包
|
||||||
- 配置文件: app.ini
|
- `zhub-client-spring-0.1.1.jar` springboot 项目驱动包
|
||||||
- java连接驱动:zhub-clien.jar
|
- `zhub.exe` Window 运行包
|
||||||

|
- `zhub.sh` Linux 运行包
|
||||||
|
- `zhub` Mac 运行包
|
||||||
|
- `app.ini` 配置文件
|
||||||
|

|
||||||
|
|
||||||
### 配置 app.ini
|
### 配置 app.ini
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# app.ini
|
# app.ini
|
||||||
[log]
|
|
||||||
handlers=console # console|file
|
|
||||||
level=debug # info|debug|error
|
|
||||||
file=zhub.log
|
|
||||||
|
|
||||||
[service]
|
[service]
|
||||||
watch=0.0.0.0:711
|
watch=0.0.0.0:711 # 服务管理端口
|
||||||
addr=0.0.0.0:1216
|
addr=0.0.0.0:1216 # 服务端口
|
||||||
auth=1 # 是否开启连接授权
|
auth=0 # 是否开启连接授权 0不开启、1开启
|
||||||
|
|
||||||
[data]
|
[data]
|
||||||
dir=D:/data # 数据目录
|
dir=./data # 数据目录
|
||||||
|
|
||||||
[ztimer] # timer 使用的数据库配置
|
[log]
|
||||||
db.addr=47.111.150.118:6063
|
handlers=console # console|file
|
||||||
db.user=root
|
level=debug # info|debug|error
|
||||||
db.password=*Zhong@0510!
|
file=zhub.log
|
||||||
db.database=zhub
|
|
||||||
|
|
||||||
[auth]
|
[ztimer] # ztimer 配置 (可选,如果不使用定时调度则可不配置)
|
||||||
admin=123456 # 授权连接账号 admin@123456
|
# db.addr=127.0.0.1:3306 # timer 使用的MySql数据库配置
|
||||||
lxy=123456
|
# db.user=root
|
||||||
|
# db.password=123456
|
||||||
|
# db.database=zhub
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 初始化 ztimer 数据库 (可选,如果不使用定时调度则不需要配置)
|
||||||
|
|
||||||
|
```sql
|
||||||
|
CREATE DATABASE zhub;
|
||||||
|
CREATE TABLE `zhub`.`tasktimer` (
|
||||||
|
`timerid` varchar(64) NOT NULL DEFAULT '' COMMENT '[主键]UUID',
|
||||||
|
`name` varchar(32) NOT NULL DEFAULT '' COMMENT '[任务名称]',
|
||||||
|
`expr` varchar(32) NOT NULL DEFAULT '' COMMENT '[时间表达式]',
|
||||||
|
`single` int NOT NULL DEFAULT '1' COMMENT '[单实例消费]1单对象,0不限',
|
||||||
|
`remark` varchar(128) NOT NULL DEFAULT '' COMMENT '[备注]',
|
||||||
|
`status` smallint NOT NULL DEFAULT '10' COMMENT '[状态]10启用,60停用',
|
||||||
|
PRIMARY KEY (`timerid`) USING BTREE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
# 初始化 四个定时任务配置, 订阅名称分别为 T:A、T:B、T:C、T:D
|
||||||
|
INSERT INTO `zhub`.`tasktimer` (`timerid`, `name`, `expr`, `single`, `remark`, `status`) VALUES
|
||||||
|
('T1', 'T:A', '*/5 * * * * ?', 1, '每5秒执行一次', 10),
|
||||||
|
('T2', 'T:B', '15s', 1, '每15秒执行一次', 10),
|
||||||
|
('T3', 'T:C', '0 0 0 * * 1', 0, '每周一00:00执行', 10),
|
||||||
|
('T4', 'T:D', '0 0 24 * * ?', 1, '每天00:00执行', 10);
|
||||||
```
|
```
|
||||||
|
|
||||||
### 启动服务
|
### 启动服务
|
||||||
@ -50,21 +78,196 @@ lxy=123456
|
|||||||
```bash
|
```bash
|
||||||
# window
|
# window
|
||||||
./zhub.exe
|
./zhub.exe
|
||||||
# linux
|
# linux (添加执行权限 chmod +x ./zhub.sh)
|
||||||
./zhub.sh
|
./zhub.sh
|
||||||
```
|
```
|
||||||
|
---
|
||||||
|
|
||||||
## 使用
|
## 连接使用
|
||||||
|
### 导入连接驱动 (根据不同的项目选择不同的导入方式)
|
||||||
|
|
||||||
### Java 客户端连接
|
import Tabs from '@theme/Tabs';
|
||||||
|
import TabItem from '@theme/TabItem';
|
||||||
|
|
||||||
```java
|
<Tabs>
|
||||||
ZhubClient zhub = new ZhubClient("", "");
|
<TabItem value="apple" label="普通Java项目" default>
|
||||||
zhub.subscribe("topic-x", x -> {
|
|
||||||
// do something.
|
```xml
|
||||||
});
|
<!-- maven 导入依赖 (或直接导入下载包中的 zhub-client-0.1.1.dev.jar ) -->
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>maven-nexus</id>
|
||||||
|
<name>maven-nexus</name>
|
||||||
|
<url>https://nexus.1216.top/repository/maven-public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- 常规Java项目 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.tccn</groupId>
|
||||||
|
<artifactId>zhub-client</artifactId>
|
||||||
|
<version>0.1.1.dev</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="orange" label="SpringBoot 项目">
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- maven 导入依赖 (或直接导入下载包中的 zhub-client-spring-0.1.1.jar ) -->
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>maven-nexus</id>
|
||||||
|
<name>maven-nexus</name>
|
||||||
|
<url>https://nexus.1216.top/repository/maven-public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- 常规Java项目 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.tccn</groupId>
|
||||||
|
<artifactId>zhub-client-spring</artifactId>
|
||||||
|
<version>0.1.1.dev</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="banana" label="Redkale项目">
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<!-- maven 导入依赖 (或直接导入下载包中的 zhub-client-redkale-0.1.1.jar ) -->
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>maven-nexus</id>
|
||||||
|
<name>maven-nexus</name>
|
||||||
|
<url>https://nexus.1216.top/repository/maven-public/</url>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- 常规Java项目 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.tccn</groupId>
|
||||||
|
<artifactId>zhub-client-redkale</artifactId>
|
||||||
|
<version>0.1.1.dev</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
```
|
||||||
|
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
### 配置初始化
|
||||||
|
<Tabs>
|
||||||
|
<TabItem value="apple" label="普通Java项目" default>
|
||||||
|
|
||||||
|
```
|
||||||
|
// 参数说明:①连接地址ip+端口, ②消费者组名称,③连接APPID (接入的多个客户端使用不同的连接APPID)
|
||||||
|
ZHubClient zhub = new ZHubClient("127.0.0.1:1216", "groupid-x", "appid-x");
|
||||||
```
|
```
|
||||||
|
|
||||||
### Java 客户端连接
|
</TabItem>
|
||||||
|
<TabItem value="orange" label="SpringBoot 项目">
|
||||||
|
|
||||||
|
```yml
|
||||||
|
# application.yml
|
||||||
|
zhub:
|
||||||
|
addr: 47.107.112.45:1216
|
||||||
|
groupid: groupid-x
|
||||||
|
appid: zhub_demo_1
|
||||||
|
# auth: token-12345 # 启用 auth情况下接入验权配置
|
||||||
|
```
|
||||||
|
```java
|
||||||
|
// 自动注入连接对象
|
||||||
|
@Autowired
|
||||||
|
protected ZHubClient zhub;
|
||||||
|
```
|
||||||
|
</TabItem>
|
||||||
|
<TabItem value="banana" label="Redkale项目">
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# source.properties
|
||||||
|
redkale.cluster.zhub[zhub].addr = 127.0.0.1:1216
|
||||||
|
redkale.cluster.zhub[zhub].auth = token-12345
|
||||||
|
redkale.cluster.zhub[zhub].groupid = zcore-zhub
|
||||||
|
# redkale.cluster.zhub[zhub].appid = zhub_demo_1 # (无需配置,取 redklae 配置的 appname)
|
||||||
|
```
|
||||||
|
```java
|
||||||
|
// 自动注入连接对象
|
||||||
|
@Resource(name = "zhub")
|
||||||
|
protected ZHubClient zhub;
|
||||||
|
```
|
||||||
|
</TabItem>
|
||||||
|
</Tabs>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 使用 zhub 收发消息
|
||||||
|
> 通过上面的操作,我们已经得到了一个 zhub 的连接实例,下面来看看具体的使用
|
||||||
|
>
|
||||||
|
|
||||||
|
1、消息的发布-订阅
|
||||||
|
```java
|
||||||
|
zhub.subscribe("topic-a", x -> {
|
||||||
|
System.out.println("接收到 a 事件:" + x);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
```java
|
||||||
|
zhub.publish("topic-a", "123");
|
||||||
|
```
|
||||||
|
2、rpc的订阅-调用
|
||||||
|
```java
|
||||||
|
zhub.rpcSubscribe("rpc-b", IType.STRING, r -> {
|
||||||
|
String str = r.getValue();
|
||||||
|
System.out.println("接收到 b 事件:" + str);
|
||||||
|
return r.render("接收到 b 事件:" + str);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
```java
|
||||||
|
RpcResult<String> rpcResult = zhub.rpc("rpc-b", "hello rpc", IType.STRING);
|
||||||
|
String result = rpcResult.getResult();
|
||||||
|
System.out.println("rpc result:" + result);
|
||||||
|
```
|
||||||
|
3、广播消息
|
||||||
|
```java
|
||||||
|
zhub.broadcast("topic-a", "123");
|
||||||
|
```
|
||||||
|
4、延时消息
|
||||||
|
```java
|
||||||
|
zhub.delay("topic-a", "123", 1000 * 60 * 5);
|
||||||
|
```
|
||||||
|
5、定时调度
|
||||||
|
```java
|
||||||
|
zhub.timer("T:A", () -> {
|
||||||
|
System.out.println("收到定时调度事件:T:A");
|
||||||
|
});
|
||||||
|
```
|
||||||
|
6、分布式锁
|
||||||
|
```java
|
||||||
|
// 获取锁,直到索取到锁后返回
|
||||||
|
Lock lock = zhub.lock("lock-a", 5);
|
||||||
|
try {
|
||||||
|
System.out.println("获取到锁");
|
||||||
|
} finally {
|
||||||
|
lock.unLock();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
```java
|
||||||
|
// 尝试获取锁,立即返回
|
||||||
|
Lock lock = zhub.tryLock("lock-a", 5);
|
||||||
|
if (!lock.success()) {
|
||||||
|
System.out.println("未获取到锁");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取到锁
|
||||||
|
try {
|
||||||
|
System.out.println("获取到锁");
|
||||||
|
} finally {
|
||||||
|
lock.unLock();
|
||||||
|
}
|
||||||
|
```
|
||||||
|
@ -99,10 +99,6 @@ const config = {
|
|||||||
label: '快速开始',
|
label: '快速开始',
|
||||||
to: '/docs/intro',
|
to: '/docs/intro',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: '基础使用',
|
|
||||||
to: '/docs/category/基础使用',
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
11729
package-lock.json
generated
11729
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "doc-zhub",
|
"name": "z-docs",
|
||||||
"version": "0.0.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"docusaurus": "docusaurus",
|
"docusaurus": "docusaurus",
|
||||||
@ -23,7 +23,8 @@
|
|||||||
"react-dom": "^18.0.0"
|
"react-dom": "^18.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@docusaurus/module-type-aliases": "2.4.1"
|
"@docusaurus/module-type-aliases": "2.4.1",
|
||||||
|
"docusaurus": "^1.14.7"
|
||||||
},
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
"production": [
|
"production": [
|
||||||
|
Loading…
Reference in New Issue
Block a user