--- sidebar_position: 1 title: 创建连接 description: 初始化客户端连接对象 --- import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; ## 支持的框架 普通Java、SpringBoot、Redkale、Golang ```java private ZHubClient zhub; @Before public void init() { // 参数:地址、组名、appid(唯一)、token zhub = new ZHubClient("127.0.0.1:1216", "test-hub", "DEV-LOCAL-001", "token-12345"); } ``` **说明**: - `appid` 必须唯一,RPC 消息回复使用此标识 - `groupid` 协同消费组,同组内只有一个消费者处理消息 **1. 依赖** ```xml dev.zhub zhub-client-spring 0.1.0424.dev ``` **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); } } ``` **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); }); } } ``` **配置文件**: ```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 ``` **使用**: ```java @Resource(name = "hub") protected ZHubClient zhub; ``` ```go // Golang 连接示例 // TODO: 待补充 ``` ## 使用示例 ```java // 单个主题 zhub.subscribe("user-login", message -> System.out.println("登录: " + message)); // 类型化消息(使用TypeToken) zhub.subscribe("user-profile", new TypeToken(){}, profile -> System.out.println("用户: " + profile.getUsername())); ``` ```java // 逗号分隔 zhub.subscribe("user-login,user-logout,user-register", message -> System.out.println("用户操作: " + message)); ``` ```java // 字符串消息 zhub.publish("user-login", "用户ID: 12345"); // 类型化消息 UserProfile profile = new UserProfile("12345", "张三", "zhangsan@example.com"); zhub.publish("user-profile", profile); ``` ## 性能优化 ### 异步处理 ```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); } }); ```