@llryiop/avatar-boot-cli 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/exam-question-generate-api.md +163 -0
- package/package.json +1 -1
- package/src/prompts.js +3 -3
- package/src/transform.js +1 -1
- package/templates/.claude/skills/avatar-boot-starter-feign/README.md +243 -0
- package/templates/.claude/skills/avatar-boot-starter-feign/SKILL.md +47 -219
- package/templates/.claude/skills/avatar-boot-starter-feign/references//345/212/237/350/203/275/350/257/246/350/247/243.md +65 -0
- package/templates/.claude/skills/avatar-boot-starter-feign/references//345/277/253/351/200/237/346/216/245/345/205/245/346/214/207/345/215/227.md +75 -0
- package/templates/.claude/skills/avatar-boot-starter-feign/references//351/205/215/347/275/256/345/217/202/350/200/203.md +70 -0
- package/templates/.claude/skills/avatar-boot-starter-job/README.md +437 -0
- package/templates/.claude/skills/avatar-boot-starter-job/SKILL.md +35 -414
- package/templates/.claude/skills/avatar-boot-starter-job/references//345/270/270/350/247/201/351/227/256/351/242/230.md +55 -0
- package/templates/.claude/skills/avatar-boot-starter-job/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +124 -0
- package/templates/.claude/skills/avatar-boot-starter-job/references//347/233/221/346/216/247/346/214/207/346/240/207.md +72 -0
- package/templates/.claude/skills/avatar-boot-starter-kafka/README.md +580 -0
- package/templates/.claude/skills/avatar-boot-starter-kafka/SKILL.md +36 -560
- package/templates/.claude/skills/avatar-boot-starter-kafka/references//346/234/200/344/275/263/345/256/236/350/267/265.md +43 -0
- package/templates/.claude/skills/avatar-boot-starter-kafka/references//346/240/270/345/277/203/345/212/237/350/203/275.md +117 -0
- package/templates/.claude/skills/avatar-boot-starter-kafka/references//351/205/215/347/275/256/345/217/202/350/200/203.md +54 -0
- package/templates/.claude/skills/avatar-boot-starter-mysql/README.md +572 -0
- package/templates/.claude/skills/avatar-boot-starter-mysql/SKILL.md +40 -550
- package/templates/.claude/skills/avatar-boot-starter-mysql/references//345/256/236/344/275/223/344/270/216/345/212/237/350/203/275.md +96 -0
- package/templates/.claude/skills/avatar-boot-starter-mysql/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/346/225/260/346/215/256/346/272/220.md +91 -0
- package/templates/.claude/skills/avatar-boot-starter-mysql/references//351/253/230/347/272/247/347/211/271/346/200/247/344/270/216/351/205/215/347/275/256.md +59 -0
- package/templates/.claude/skills/avatar-boot-starter-nacos/README.md +901 -0
- package/templates/.claude/skills/avatar-boot-starter-nacos/SKILL.md +40 -879
- package/templates/.claude/skills/avatar-boot-starter-nacos/references//345/212/237/350/203/275/344/275/277/347/224/250.md +134 -0
- package/templates/.claude/skills/avatar-boot-starter-nacos/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +96 -0
- package/templates/.claude/skills/avatar-boot-starter-nacos/references//346/225/205/351/232/234/346/216/222/346/237/245.md +64 -0
- package/templates/.claude/skills/avatar-boot-starter-oss/README.md +594 -0
- package/templates/.claude/skills/avatar-boot-starter-oss/SKILL.md +52 -570
- package/templates/.claude/skills/avatar-boot-starter-oss/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +77 -0
- package/templates/.claude/skills/avatar-boot-starter-oss/references//346/240/270/345/277/203/345/212/237/350/203/275.md +94 -0
- package/templates/.claude/skills/avatar-boot-starter-oss/references//350/247/204/350/214/203/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.md +61 -0
- package/templates/.claude/skills/avatar-boot-starter-redis/README.md +586 -0
- package/templates/.claude/skills/avatar-boot-starter-redis/SKILL.md +42 -566
- package/templates/.claude/skills/avatar-boot-starter-redis/references//345/277/253/351/200/237/346/216/245/345/205/245/344/270/216/351/205/215/347/275/256.md +78 -0
- package/templates/.claude/skills/avatar-boot-starter-redis/references//346/225/260/346/215/256/346/223/215/344/275/234.md +111 -0
- package/templates/.claude/skills/avatar-boot-starter-redis/references//351/253/230/347/272/247/345/212/237/350/203/275.md +90 -0
- package/templates/.claude/skills/avatar-boot-starter-rocketmq/README.md +662 -0
- package/templates/.claude/skills/avatar-boot-starter-rocketmq/SKILL.md +48 -640
- package/templates/.claude/skills/avatar-boot-starter-rocketmq/references//346/240/270/345/277/203/345/212/237/350/203/275.md +101 -0
- package/templates/.claude/skills/avatar-boot-starter-rocketmq/references//351/205/215/347/275/256/344/270/216/346/263/250/346/204/217/344/272/213/351/241/271.md +44 -0
- package/templates/.claude/skills/avatar-boot-starter-rocketmq/references//351/253/230/347/272/247/347/211/271/346/200/247.md +71 -0
- package/templates/.claude/skills/avatar-boot-starter-web/README.md +1007 -0
- package/templates/.claude/skills/avatar-boot-starter-web/SKILL.md +150 -1003
- package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-LogInfo/346/263/250/350/247/243.md +75 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/345/205/250/345/261/200/345/274/202/345/270/270/345/244/204/347/220/206.md +90 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/346/214/207/346/240/207/347/233/221/346/216/247.md +74 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/346/227/245/345/277/227/344/275/223/347/263/273.md +73 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//345/212/237/350/203/275-/350/257/267/346/261/202/344/270/212/344/270/213/346/226/207.md +77 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//345/277/253/351/200/237/346/216/245/345/205/245/346/214/207/345/215/227.md +52 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//346/263/250/346/204/217/344/272/213/351/241/271.md +68 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//350/207/252/345/256/232/344/271/211/346/211/251/345/261/225/346/214/207/345/215/227.md +107 -0
- package/templates/.claude/skills/avatar-boot-starter-web/references//351/205/215/347/275/256/345/217/202/350/200/203.md +107 -0
- package/templates/.claude/skills/crud-generator/SKILL.md +133 -64
- package/templates/.claude/skills/database-design/README.md +207 -0
- package/templates/.claude/skills/database-design/SKILL.md +469 -82
- package/templates/.claude/skills/database-design/references//345/221/275/345/220/215/350/247/204/350/214/203.md +232 -0
- package/templates/.claude/skills/database-design/references//345/255/227/346/256/265/347/261/273/345/236/213/350/247/204/350/214/203.md +400 -0
- package/templates/.claude/skills/database-design/references//347/264/242/345/274/225/350/247/204/350/214/203.md +506 -0
- package/templates/avatar-scaffold-api/pom.xml +0 -5
- package/templates/avatar-scaffold-service/pom.xml +25 -87
- package/templates/avatar-scaffold-service/src/main/resources/application-dev.yaml +3 -5
- package/templates/avatar-scaffold-service/src/main/resources/application-local.yaml +2 -2
- package/templates/pom.xml +9 -18
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Kafka 核心功能
|
|
2
|
+
|
|
3
|
+
## 1. 添加依赖
|
|
4
|
+
|
|
5
|
+
```xml
|
|
6
|
+
<dependency>
|
|
7
|
+
<groupId>com.iflytek.avatar.boot</groupId>
|
|
8
|
+
<artifactId>avatar-boot-starter-kafka</artifactId>
|
|
9
|
+
</dependency>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 2. 配置 Kafka
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
avatar:
|
|
16
|
+
kafka:
|
|
17
|
+
bootstrap-servers: ${KAFKA_SERVERS:localhost:9092}
|
|
18
|
+
producer:
|
|
19
|
+
acks: all
|
|
20
|
+
retries: 3
|
|
21
|
+
batch-size: 16384
|
|
22
|
+
buffer-memory: 33554432
|
|
23
|
+
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
|
24
|
+
value-serializer: org.apache.kafka.common.serialization.StringSerializer
|
|
25
|
+
consumer:
|
|
26
|
+
group-id: ${spring.application.name}
|
|
27
|
+
auto-offset-reset: earliest
|
|
28
|
+
enable-auto-commit: true
|
|
29
|
+
auto-commit-interval: 1000
|
|
30
|
+
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
|
|
31
|
+
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 3. 发送消息
|
|
35
|
+
|
|
36
|
+
```java
|
|
37
|
+
@Resource
|
|
38
|
+
private KafkaTemplate<String, String> kafkaTemplate;
|
|
39
|
+
|
|
40
|
+
// 同步发送
|
|
41
|
+
SendResult<String, String> result = kafkaTemplate.send(topic, message).get();
|
|
42
|
+
|
|
43
|
+
// 异步发送
|
|
44
|
+
kafkaTemplate.send(topic, message).addCallback(
|
|
45
|
+
result -> log.info("发送成功: {}", result.getRecordMetadata().offset()),
|
|
46
|
+
ex -> log.error("发送失败: {}", ex.getMessage())
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
// 发送带 Key 的消息(保证相同 Key 进入同一分区)
|
|
50
|
+
kafkaTemplate.send(topic, key, message);
|
|
51
|
+
|
|
52
|
+
// 批量发送
|
|
53
|
+
messages.forEach(msg -> kafkaTemplate.send(topic, msg));
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 4. 消费消息
|
|
57
|
+
|
|
58
|
+
```java
|
|
59
|
+
@Component
|
|
60
|
+
public class OrderConsumer {
|
|
61
|
+
|
|
62
|
+
// 基础消费
|
|
63
|
+
@KafkaListener(topics = "order-topic", groupId = "order-consumer-group")
|
|
64
|
+
public void consume(String message) {
|
|
65
|
+
// 处理业务逻辑
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// 消费带 Key 的消息
|
|
69
|
+
@KafkaListener(topics = "order-topic", groupId = "order-consumer-group")
|
|
70
|
+
public void consumeWithKey(
|
|
71
|
+
@Payload String message,
|
|
72
|
+
@Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) String key) {
|
|
73
|
+
log.info("Key: {}, Message: {}", key, message);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// 批量消费
|
|
77
|
+
@KafkaListener(topics = "order-topic", groupId = "order-consumer-group")
|
|
78
|
+
public void consumeBatch(List<String> messages) {
|
|
79
|
+
messages.forEach(this::processMessage);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// 手动提交偏移量(enable-auto-commit: false 时使用)
|
|
83
|
+
@KafkaListener(topics = "order-topic", groupId = "order-consumer-group")
|
|
84
|
+
public void consumeManual(String message, Acknowledgment acknowledgment) {
|
|
85
|
+
try {
|
|
86
|
+
processMessage(message);
|
|
87
|
+
acknowledgment.acknowledge(); // 手动提交
|
|
88
|
+
} catch (Exception e) {
|
|
89
|
+
log.error("处理失败,不提交偏移量: {}", e.getMessage());
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## 5. 事务消息
|
|
96
|
+
|
|
97
|
+
```java
|
|
98
|
+
@Service
|
|
99
|
+
public class OrderService {
|
|
100
|
+
|
|
101
|
+
@Resource
|
|
102
|
+
private KafkaTemplate<String, String> kafkaTemplate;
|
|
103
|
+
|
|
104
|
+
@Transactional
|
|
105
|
+
public void createOrderWithTransaction(Order order) {
|
|
106
|
+
// 保存订单到数据库
|
|
107
|
+
orderMapper.insert(order);
|
|
108
|
+
|
|
109
|
+
// 在同一事务中发送 Kafka 消息
|
|
110
|
+
kafkaTemplate.executeInTransaction(operations -> {
|
|
111
|
+
operations.send("order-topic", JSON.toJSONString(order));
|
|
112
|
+
operations.send("inventory-topic", JSON.toJSONString(order));
|
|
113
|
+
return true;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Kafka 配置参考
|
|
2
|
+
|
|
3
|
+
## 完整配置项
|
|
4
|
+
|
|
5
|
+
```yaml
|
|
6
|
+
avatar:
|
|
7
|
+
kafka:
|
|
8
|
+
bootstrap-servers: localhost:9092 # Kafka 服务器地址
|
|
9
|
+
|
|
10
|
+
producer:
|
|
11
|
+
acks: all # 确认模式:0/1/all
|
|
12
|
+
retries: 3 # 重试次数
|
|
13
|
+
batch-size: 16384 # 批量大小(字节)
|
|
14
|
+
buffer-memory: 33554432 # 缓冲区大小(字节,32MB)
|
|
15
|
+
key-serializer: org.apache.kafka.common.serialization.StringSerializer
|
|
16
|
+
value-serializer: org.apache.kafka.common.serialization.StringSerializer
|
|
17
|
+
|
|
18
|
+
consumer:
|
|
19
|
+
group-id: my-consumer-group # 消费者组 ID(必填)
|
|
20
|
+
auto-offset-reset: earliest # 偏移量重置策略:earliest/latest
|
|
21
|
+
enable-auto-commit: true # 是否自动提交偏移量
|
|
22
|
+
auto-commit-interval: 1000 # 自动提交间隔(毫秒)
|
|
23
|
+
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
|
|
24
|
+
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 配置说明
|
|
28
|
+
|
|
29
|
+
| 配置项 | 说明 | 默认值 |
|
|
30
|
+
|:--|:--|:--|
|
|
31
|
+
| `bootstrap-servers` | Kafka 服务器地址 | `localhost:9092` |
|
|
32
|
+
| `producer.acks` | 确认模式(0=不确认/1=Leader确认/all=全部确认) | `all` |
|
|
33
|
+
| `producer.retries` | 发送失败重试次数 | `3` |
|
|
34
|
+
| `consumer.group-id` | 消费者组 ID | - |
|
|
35
|
+
| `consumer.auto-offset-reset` | 无偏移量时的策略(earliest从头/latest从最新) | `earliest` |
|
|
36
|
+
| `consumer.enable-auto-commit` | 是否自动提交偏移量 | `true` |
|
|
37
|
+
|
|
38
|
+
## 多环境配置
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
# application-dev.yml
|
|
42
|
+
avatar:
|
|
43
|
+
kafka:
|
|
44
|
+
bootstrap-servers: localhost:9092
|
|
45
|
+
consumer:
|
|
46
|
+
group-id: ${spring.application.name}-dev
|
|
47
|
+
|
|
48
|
+
# application-prod.yml
|
|
49
|
+
avatar:
|
|
50
|
+
kafka:
|
|
51
|
+
bootstrap-servers: ${KAFKA_SERVERS}
|
|
52
|
+
consumer:
|
|
53
|
+
group-id: ${spring.application.name}
|
|
54
|
+
```
|