diff --git a/文档/基础组件/rocketmq/20250529-engine-starter-rocketmq-2.0.0.md b/文档/基础组件/rocketmq/20250529-engine-starter-rocketmq-2.0.0.md
new file mode 100644
index 0000000..c9b5994
--- /dev/null
+++ b/文档/基础组件/rocketmq/20250529-engine-starter-rocketmq-2.0.0.md
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# engine-starter-rocketmq 使用教程
+
+> 这是一个基于 `rocketmq-spring-boot-starter` 的扩展项目
+
+## 特性
+
+- [X] `YmRocketMqClient` 消息发送工具类
+
+## 快速开始
+- **注意:** `qifu-saas-parent >= 2.0.0-SNAPSHOT`
+
+### 添加依赖
+
+```xml
+
+ com.yuanmeng.engine
+ engine-starter-rocketmq
+ 2.0.0-SNAPSHOT
+
+```
+
+### 配置 RocketMQ
+
+```yaml
+rocketmq:
+ name-server: rocketmq.qifu.com:30938
+ producer:
+ group: qifu-saas-xxx
+ namespace: dev
+ # 发送消息超时时间,默认3000
+ sendMessageTimeout: 10000
+ consumer:
+ group: qifu-saas-xxx
+ namespace: dev
+ # 一次拉取消息最大值,注意是拉取消息的最大值而非消费最大值
+ pull-batch-size: 10
+```
+
+### 创建需要的 Topic 和 ConsumerGroup
+- Rocketmq 的 topic 和 consumer group 都需要手动创建
+- 通过 RocketMQ 控制台创建
+
+## 工具使用
+### 发送消息
+
+```java
+@RestController
+@RequestMapping("/demo")
+public class DemoController {
+
+ @GetMapping("/send")
+ public String send() {
+ // 发送消息,会自动添加 SkyWalking 链路追踪信息
+ DemoMessage message = new DemoMessage()
+ SendResult result = YmRocketMqClient.sendSync("demo-topic", "demo-tag", message);
+ return "发送成功:" + result;
+ }
+}
+```
+
+### 消费消息
+
+```java
+@Component
+@RocketMQMessageListener(
+ topic = "demo-topic",
+ selectorExpression = "demo-tag",
+ consumerGroup = "${yuanmeng.rocketmq.consumer-group.demo:demo-consumer-group}"
+)
+public class DemoConsumer implements RocketMQListener {
+
+ @Override
+ public void onMessage(MessageExt message) {
+ DemoMessage demoMessage = JSONObject.parseObject(message.getBody(), DemoMessage.class);
+ log.info("处理消费消息结果:{}, tag = {}, messageId = {}", demoMessage, message.getTags(), message.getMsgId());
+ // 处理业务逻辑...
+ }
+}
+```
+
+## 完整配置
+```yaml
+yuanmeng:
+ rocketmq:
+ enable: true
+```
\ No newline at end of file
diff --git a/绘图/业务监控大盘.excalidraw b/绘图/业务监控大盘.excalidraw
new file mode 100644
index 0000000..56ff288
--- /dev/null
+++ b/绘图/业务监控大盘.excalidraw
@@ -0,0 +1,692 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "https://excalidraw-jetbrains-plugin",
+ "elements": [
+ {
+ "id": "eEeoZS16uG56nDApOZs9N",
+ "type": "rectangle",
+ "x": 428,
+ "y": 182,
+ "width": 890,
+ "height": 531,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "seed": 237716243,
+ "version": 38,
+ "versionNonce": 1202678579,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748332926954,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "pf4yy9KXBQgwxA3C-PpKb",
+ "type": "rectangle",
+ "x": 460,
+ "y": 208,
+ "width": 209,
+ "height": 484,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1067551955,
+ "version": 45,
+ "versionNonce": 1348156499,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748332932619,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "gnKMHC9g78htOUSF4simT",
+ "type": "text",
+ "x": 497,
+ "y": 234,
+ "width": 120,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 553007603,
+ "version": 61,
+ "versionNonce": 672080371,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748332947819,
+ "link": null,
+ "locked": false,
+ "text": "应用服务列表",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "baseline": 18,
+ "containerId": null,
+ "originalText": "应用服务列表",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "szCTcE7b6MjJ_VJoOtK5e",
+ "type": "rectangle",
+ "x": 703,
+ "y": 212,
+ "width": 594,
+ "height": 201,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1066369331,
+ "version": 88,
+ "versionNonce": 1619923069,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748332995352,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "oHMTtBDiLbGIa3p40GqC2",
+ "type": "text",
+ "x": 918,
+ "y": 228,
+ "width": 120,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 394088307,
+ "version": 43,
+ "versionNonce": 1073759923,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333674186,
+ "link": null,
+ "locked": false,
+ "text": "应用服务详情",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "baseline": 18,
+ "containerId": null,
+ "originalText": "应用服务详情",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "VX6SxBDx9cEiaH27rfs6C",
+ "type": "rectangle",
+ "x": 701,
+ "y": 434,
+ "width": 588,
+ "height": 247,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1149948371,
+ "version": 75,
+ "versionNonce": 1727971485,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333161852,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "kteNSyTy8ofeMtdKUfSuX",
+ "type": "rectangle",
+ "x": 725,
+ "y": 453,
+ "width": 259,
+ "height": 92,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 507310227,
+ "version": 87,
+ "versionNonce": 1662500125,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333222852,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "XRqTFOlDob8bvET8WmRXh",
+ "type": "rectangle",
+ "x": 727,
+ "y": 561,
+ "width": 259,
+ "height": 99,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 526031859,
+ "version": 120,
+ "versionNonce": 1748182365,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1748333652567,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "Q79QzFszyuPUYlD-4fPOg",
+ "type": "rectangle",
+ "x": 1002,
+ "y": 563,
+ "width": 265,
+ "height": 99,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1819422483,
+ "version": 175,
+ "versionNonce": 1005446685,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333277320,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "HjXOgBul2HmGUt01jIIIu",
+ "type": "rectangle",
+ "x": 999,
+ "y": 454,
+ "width": 268,
+ "height": 89,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1125336787,
+ "version": 97,
+ "versionNonce": 608291133,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333226386,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "8UZKPKisATsxYokL4qyi3",
+ "type": "text",
+ "x": 792,
+ "y": 489,
+ "width": 80.37997436523438,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 304901107,
+ "version": 13,
+ "versionNonce": 2113962419,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333644582,
+ "link": null,
+ "locked": false,
+ "text": "CPU监控",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "baseline": 18,
+ "containerId": null,
+ "originalText": "CPU监控",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "LhBKk2Z5fMm0_Nc5xAyWj",
+ "type": "text",
+ "x": 1089,
+ "y": 493,
+ "width": 80,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 658872755,
+ "version": 17,
+ "versionNonce": 1956372253,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333649997,
+ "link": null,
+ "locked": false,
+ "text": "内存监控",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "baseline": 18,
+ "containerId": null,
+ "originalText": "内存监控",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "DLtuS5siK48XuLWBFD-9a",
+ "type": "text",
+ "x": 799,
+ "y": 606,
+ "width": 80,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1761901149,
+ "version": 16,
+ "versionNonce": 381372627,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333655681,
+ "link": null,
+ "locked": false,
+ "text": "磁盘监控",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "baseline": 18,
+ "containerId": null,
+ "originalText": "磁盘监控",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "QwA3rZceG1ZzqXAFzt6A-",
+ "type": "text",
+ "x": 1082,
+ "y": 608,
+ "width": 80,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1404125939,
+ "version": 44,
+ "versionNonce": 741476253,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333665714,
+ "link": null,
+ "locked": false,
+ "text": "网络监控",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "baseline": 18,
+ "containerId": null,
+ "originalText": "网络监控",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "apI_6fXzwVGjmfgjZd9vc",
+ "type": "rectangle",
+ "x": 745,
+ "y": 275,
+ "width": 197,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 2017307229,
+ "version": 24,
+ "versionNonce": 345328883,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "vaW9NveNZiomtR-GQx4Lo"
+ }
+ ],
+ "updated": 1748333693804,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "vaW9NveNZiomtR-GQx4Lo",
+ "type": "text",
+ "x": 823.5,
+ "y": 280,
+ "width": 40,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1275257693,
+ "version": 11,
+ "versionNonce": 1774693075,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333695996,
+ "link": null,
+ "locked": false,
+ "text": "名称",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "baseline": 18,
+ "containerId": "apI_6fXzwVGjmfgjZd9vc",
+ "originalText": "名称",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "2qOZxK9JX8qNvqvQFYJ7N",
+ "type": "rectangle",
+ "x": 1002,
+ "y": 274,
+ "width": 260,
+ "height": 36,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 988476787,
+ "version": 84,
+ "versionNonce": 55278291,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "L0Fzyx5mNl_ogCJ1W2bxN"
+ }
+ ],
+ "updated": 1748333709824,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "L0Fzyx5mNl_ogCJ1W2bxN",
+ "type": "text",
+ "x": 1112,
+ "y": 279.5,
+ "width": 40,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1971294013,
+ "version": 78,
+ "versionNonce": 2058503347,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333712653,
+ "link": null,
+ "locked": false,
+ "text": "描述",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "baseline": 18,
+ "containerId": "2qOZxK9JX8qNvqvQFYJ7N",
+ "originalText": "描述",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "RnVYRNi85nQkPjwN6Txqh",
+ "type": "rectangle",
+ "x": 745,
+ "y": 328,
+ "width": 516,
+ "height": 71,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 1280898035,
+ "version": 62,
+ "versionNonce": 616946067,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "XsKpmAsx9pPYjvfrXMGmM"
+ }
+ ],
+ "updated": 1748333736188,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "XsKpmAsx9pPYjvfrXMGmM",
+ "type": "text",
+ "x": 895.880012512207,
+ "y": 351,
+ "width": 214.23997497558594,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 399921075,
+ "version": 47,
+ "versionNonce": 531252787,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333746705,
+ "link": null,
+ "locked": false,
+ "text": "节点列表(节点,ip等)",
+ "fontSize": 20,
+ "fontFamily": 1,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "baseline": 18,
+ "containerId": "RnVYRNi85nQkPjwN6Txqh",
+ "originalText": "节点列表(节点,ip等)",
+ "lineHeight": 1.25
+ },
+ {
+ "id": "T2aicn5huf1uUB_yHb5hN",
+ "type": "text",
+ "x": 505,
+ "y": 352,
+ "width": 96,
+ "height": 40,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "roundness": null,
+ "seed": 26603325,
+ "version": 62,
+ "versionNonce": 1313608797,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1748333817863,
+ "link": null,
+ "locked": false,
+ "text": "轮播选择\n右边跟着变化",
+ "fontSize": 16,
+ "fontFamily": 1,
+ "textAlign": "left",
+ "verticalAlign": "top",
+ "baseline": 34,
+ "containerId": null,
+ "originalText": "轮播选择\n右边跟着变化",
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "gridSize": null,
+ "viewBackgroundColor": "#ffffff"
+ },
+ "files": {}
+}
\ No newline at end of file