添加:ZHub 管理接口文档和客户端使用指南
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user