commit 30876306c590c45ac292ea55da0e5d9772d22080 Author: 梁显优 <237809796@qq.com> Date: Tue Jul 18 03:44:56 2023 +0800 新建:spring-zhub-start 工程提交 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..549e00a --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..9913c6e --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Read Me First +> 运行本 demo 先启动消息中间件 + +## zhub 消息中间间启动 + +**1、通过 docker 镜像启动** +> docker pull harbor.1216.top/zhub/zhub:v8 +> docker run -d --name zhub -p 711:711 -p 1216:1216 zhub:v8 + +**2、通过二进制文件启动** +https://img.1216.top/docs/dl/zhub-rc.zip + +![](https://img.1216.top/docs/zhub-rc.png) +- 如果 需要做timer测试,需要首先导入 z-tiemr.sql 到 mysql ;不影响其他运行测试 + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..19ae6c5 --- /dev/null +++ b/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 3.1.1 + + + com.example + zhub-start + 0.0.1-SNAPSHOT + spring-zhub-start + Demo project for Spring Boot + + 17 + + + + org.springframework.boot + spring-boot-starter-web-services + + + + org.springframework.boot + spring-boot-starter-test + test + + + + net.tccn + zhub-cli + 1.0 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java new file mode 100644 index 0000000..64b538a --- /dev/null +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -0,0 +1,13 @@ +package com.example.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + +} diff --git a/src/main/java/com/example/demo/HelloController.java b/src/main/java/com/example/demo/HelloController.java new file mode 100644 index 0000000..741b53a --- /dev/null +++ b/src/main/java/com/example/demo/HelloController.java @@ -0,0 +1,88 @@ +package com.example.demo; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import tccn.IType; +import tccn.zhub.RpcResult; +import tccn.zhub.ZHubClient; + +import java.util.logging.Logger; + +@RestController +@RequestMapping("/hello") +public class HelloController { + + /* + 【zbus 对象初始化必要参数】 + - addr: 服务连接地址 ip:端口 + - groupid: 消费者组ID (非必须,订阅消息存在消费者组的时候协同消费,相同的消费者组之间名称填写相同) + - appid: 应用ID (非必须,如果做RPC 调用的时候必须,且全局唯一) + - auth: 认证信息,(必须,在中间件中配置) -- 老版本 app.ini 文件中的auth下配置, 最新zhub的 feature/auth 版本在 auth.yml 中配置的token + */ + private static final ZHubClient zhub = new ZHubClient("127.0.0.1:1216", "group-test", "DEV-LOCAL", "lxy@123456"); + + @RequestMapping("/") + public String index() { + return "Greetings from Spring Boot!"; + } + + // ----------------------------------------------------------------- + // -------------- 发送消息前,先做相应频道订阅 -------------------------- + // 简单演示,实际项目中,确保其他服务资源启动完成后再开始处理数据 + static { + // 订阅主题 a + zhub.subscribe("topic-t", x -> { + System.out.println("accept topic-t: " + x); + }); + + // 订阅主题 delay-t, 和上面的一样 + zhub.subscribe("delay-t", x -> { + System.out.println("accept delay-t: " + x); + }); + + // 订阅远程调用: rpc-t + zhub.rpcSubscribe("rpc-t", IType.STRING, r -> { + Logger.getLogger(HelloController.class.getSimpleName()).info("timer-t running"); + String value = r.getValue(); + return r.render("收到rpc消息:" + value); + }); + + // 订阅定时调度, 中间件中需要连接数据库并创建相应的 定时任务, + zhub.timer("timer-t", () -> { + Logger.getGlobal().info("timer-t running"); + System.out.println("timer-t running"); + }); + } + + // ----------------------------------------------------------------- + + + // 发送 主题消息 + @RequestMapping("/publish") + public String publish(String value) { + zhub.publish("topic-t", value); + return "+OK!"; + } + + // 发送 广播消息,和发布-订阅 频道命名空间相同 + @RequestMapping("/broadcast") + public String broadcast(String value) { + zhub.broadcast("topic-t", value); + return "+OK!"; + } + + // 发送延时消息,和发布-订阅 频道命名空间相同 + @RequestMapping("/delay") + public String broadcast(String value, long delayTime) { + zhub.delay("delay-t", value, delayTime); + return "+OK!"; + } + + @RequestMapping("/rpc") + public RpcResult rpc(String value) { + RpcResult result = zhub.rpc("rpc-t", value, IType.STRING); + return result; + } + + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/src/test/java/com/example/demo/DemoApplicationTests.java b/src/test/java/com/example/demo/DemoApplicationTests.java new file mode 100644 index 0000000..2778a6a --- /dev/null +++ b/src/test/java/com/example/demo/DemoApplicationTests.java @@ -0,0 +1,13 @@ +package com.example.demo; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class DemoApplicationTests { + + @Test + void contextLoads() { + } + +}