添加:ZHub 管理接口文档和客户端使用指南

This commit is contained in:
2025-09-23 21:48:31 +08:00
parent 88011cf20b
commit 5af775e525
35 changed files with 4133 additions and 412 deletions

View File

@@ -1,60 +1,177 @@
---
sidebar_position: 0
sidebar_position: 1
title: 创建连接
description: 初始化客户端连接对象
---
:::tip
目前已提供三种客户端连接使用
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
- Java 项目
- [普通 Java 项目](#java通用)
- [使用 Redkale 的 Java 项目](#redkale框架-项目里面使用)
- [Golang 项目](#golang-项目中使用)
## 支持的框架
:::
普通Java、SpringBoot、Redkale、Golang
---
## Java通用
> 在Java 项目中引入 zhub-client.jar
<Tabs>
<TabItem value="java" label="普通Java项目" default>
```java
private ZHubClient zhub;
private ZHubClient zhub;
@Before
public void init() {
// 参数说明:① ip:端⼝, ②消费者组名称, ③项⽬实例名(名称需全局唯⼀)④授权码
zhub = new ZHubClient("127.0.0.1:6066", "test-hub", "DEV-LOCAL", "user@pwd123");
@Before
public void init() {
// 参数地址、组名、appid(唯一)、token
zhub = new ZHubClient("127.0.0.1:1216", "test-hub", "DEV-LOCAL-001", "token-12345");
}
```
**说明**
- `appid` 必须唯一RPC 消息回复使用此标识
- `groupid` 协同消费组,同组内只有一个消费者处理消息
</TabItem>
<TabItem value="spring" label="SpringBoot项目">
**1. 依赖**
```xml
<dependency>
<groupId>dev.zhub</groupId>
<artifactId>zhub-client-spring</artifactId>
<version>0.1.0424.dev</version>
</dependency>
```
**2. 配置 application.yml**
```yaml
zhub:
addr: 127.0.0.1:1216
groupid: spring-boot-app
appid: spring-boot-001 # 必须唯一
auth: token-12345
```
**3. 配置类**
```java
@Configuration
public class ZHubConfig {
@Value("${zhub.addr}") private String addr;
@Value("${zhub.groupid}") private String groupId;
@Value("${zhub.appid}") private String appId;
@Value("${zhub.auth}") private String auth;
@Bean
public ZHubClient zhubClient() {
return new ZHubClient(addr, groupId, appId, auth);
}
}
```
---
## Redkale框架 项目里面使用
> 在Java的redkale 项目中引入 zhub-rekale.jar
> 在配置文件中配置zhub组件
**4. 使用**
```java
@Service
public class UserService {
@Autowired
private ZHubClient zhub;
public void publishEvent(String userId, String event) {
zhub.publish("user-event", "{\"userId\":\"" + userId + "\",\"event\":\"" + event + "\"}");
}
@PostConstruct
public void init() {
zhub.subscribe("user-notification", message -> {
System.out.println("通知: " + message);
});
}
}
```
# source.properties 中配置
############ ClusterSource @Resource(name="hub") ############
redkale.cluster.zhub[hub].addr = 127.0.0.1:6066
</TabItem>
<TabItem value="redkale" label="Redkale项目">
**配置文件**
```properties
# source.properties
redkale.cluster.zhub[hub].addr = 127.0.0.1:1216
redkale.cluster.zhub[hub].auth = user@pwd123
redkale.cluster.zhub[hub].groupid = test-hub
```
> 在 service 中注入组件
>
**使用**
```java
@Resource(name = "hub")
protected ZHubClient zhub;
@Resource(name = "hub")
protected ZHubClient zhub;
```
## Golang 项目中使用
</TabItem>
<TabItem value="golang" label="Golang项目">
> 待补充
```go
// Golang 连接示例
// TODO: 待补充
```
---
</TabItem>
</Tabs>
## 使用示例
<Tabs>
<TabItem value="subscribe" label="基础订阅" default>
```java
// 单个主题
zhub.subscribe("user-login", message -> System.out.println("登录: " + message));
// 类型化消息使用TypeToken
zhub.subscribe("user-profile", new TypeToken<UserProfile>(){}, profile ->
System.out.println("用户: " + profile.getUsername()));
```
</TabItem>
<TabItem value="multi" label="多主题订阅">
```java
// 逗号分隔
zhub.subscribe("user-login,user-logout,user-register", message ->
System.out.println("用户操作: " + message));
```
</TabItem>
<TabItem value="publish" label="发布消息">
```java
// 字符串消息
zhub.publish("user-login", "用户ID: 12345");
// 类型化消息
UserProfile profile = new UserProfile("12345", "张三", "zhangsan@example.com");
zhub.publish("user-profile", profile);
```
</TabItem>
</Tabs>
## 性能优化
### 异步处理
```java
// 避免阻塞消息处理
zhub.subscribe("topic-abc", message -> {
CompletableFuture.runAsync(() -> {
processMessage(message);
});
});
```
### 错误处理
```java
zhub.subscribe("topic-abc", message -> {
try {
processMessage(message);
} catch (Exception e) {
logger.error("消息处理失败", e);
}
});
```