@pencilps/avatar-boot-cli 1.0.0
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/README.md +309 -0
- package/bin/cli.js +3 -0
- package/package.json +34 -0
- package/src/index.js +78 -0
- package/src/prompts.js +78 -0
- package/src/template.js +37 -0
- package/src/transform.js +172 -0
- package/src/utils.js +34 -0
- package/templates/.claude/rules/architecture-redlines.md +146 -0
- package/templates/.claude/rules/code-review-standards.md +137 -0
- package/templates/.claude/rules/coding-standards.md +56 -0
- package/templates/.claude/rules/git-commit.md +59 -0
- package/templates/.claude/rules/layered-architecture.md +201 -0
- package/templates/.claude/rules/mybatis-plus.md +263 -0
- package/templates/.claude/rules/tech-stack.md +41 -0
- package/templates/.claude/rules/version.md +467 -0
- package/templates/.claude/skills/ai-tool-guide/SKILL.md +314 -0
- package/templates/.claude/skills/api-design/SKILL.md +200 -0
- package/templates/.claude/skills/api-doc-generator/SKILL.md +380 -0
- package/templates/.claude/skills/api-service-module-creator/SKILL.md +1114 -0
- package/templates/.claude/skills/avatar-boot-starter-feign/README.md +243 -0
- package/templates/.claude/skills/avatar-boot-starter-feign/SKILL.md +71 -0
- 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 +58 -0
- 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 +56 -0
- 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 +62 -0
- 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 +62 -0
- 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 +76 -0
- 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 +62 -0
- 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 +70 -0
- 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 +154 -0
- 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/changelog-generator/SKILL.md +114 -0
- package/templates/.claude/skills/code-review/SKILL.md +239 -0
- package/templates/.claude/skills/crud-generator/SKILL.md +893 -0
- package/templates/.claude/skills/database-design/README.md +207 -0
- package/templates/.claude/skills/database-design/SKILL.md +764 -0
- 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/.claude/skills/deployment-config/SKILL.md +277 -0
- package/templates/.claude/skills/incident-analysis/SKILL.md +241 -0
- package/templates/.claude/skills/integration-test-generator/SKILL.md +496 -0
- package/templates/.claude/skills/prompt-engineering/SKILL.md +249 -0
- package/templates/.claude/skills/requirement-management/SKILL.md +244 -0
- package/templates/.claude/skills/security-audit/SKILL.md +330 -0
- package/templates/.claude/skills/test-case-design/SKILL.md +257 -0
- package/templates/.claude/skills/testing-workflow/SKILL.md +68 -0
- package/templates/.claude/skills/troubleshooting/SKILL.md +240 -0
- package/templates/CLAUDE.md +173 -0
- package/templates/README.md +268 -0
- package/templates/avatar-scaffold-api/pom.xml +36 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/api/LoginFeignClient.java +42 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/constant/LoginConstant.java +21 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/request/LoginRequest.java +17 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/request/RefreshTokenRequest.java +14 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/response/LoginResponse.java +31 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/response/TokenInfoResponse.java +25 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/enums/LoginTypeEnum.java +23 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/exception/LoginErrorCode.java +25 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/exception/LoginException.java +23 -0
- package/templates/avatar-scaffold-service/k8s-app/Dockerfile +14 -0
- package/templates/avatar-scaffold-service/k8s-app/Dockerfile-arm64 +14 -0
- package/templates/avatar-scaffold-service/packaging/assembly.xml +16 -0
- package/templates/avatar-scaffold-service/pom.xml +88 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/Application.java +21 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/config/LoginConfig.java +20 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/controller/LoginController.java +37 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/converter/LoginConverter.java +54 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/feign/DemoFeign.java +24 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/repository/UserLoginRepository.java +10 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/repository/entity/UserLoginEntity.java +33 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/repository/entity/UserTokenEntity.java +39 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/repository/mapper/UserLoginMapper.java +23 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/service/LoginService.java +22 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/service/impl/LoginServiceImpl.java +43 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/utils/LoginUtils.java +31 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-dev.yaml +26 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-local.yaml +61 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-prod.yaml +25 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-test.yaml +26 -0
- package/templates/avatar-scaffold-service/src/main/resources/application.yaml +12 -0
- package/templates/pom.xml +89 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Kafka 最佳实践与注意事项
|
|
2
|
+
|
|
3
|
+
## 最佳实践
|
|
4
|
+
|
|
5
|
+
1. **消息 Key 设计**:使用业务唯一标识作为 Key,保证相关消息的顺序性
|
|
6
|
+
```java
|
|
7
|
+
kafkaTemplate.send("order-topic", order.getOrderId(), JSON.toJSONString(order));
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
2. **幂等处理**:消费者必须做幂等处理,避免重复消费
|
|
11
|
+
```java
|
|
12
|
+
@KafkaListener(topics = "order-topic", groupId = "order-group")
|
|
13
|
+
public void consume(String message) {
|
|
14
|
+
String orderId = extractOrderId(message);
|
|
15
|
+
if (orderService.isProcessed(orderId)) return; // 幂等检查
|
|
16
|
+
orderService.process(message);
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
3. **异常处理**:消费失败时记录日志,必要时发送到死信队列
|
|
21
|
+
```java
|
|
22
|
+
@KafkaListener(topics = "order-topic", groupId = "order-group")
|
|
23
|
+
public void consume(String message) {
|
|
24
|
+
try {
|
|
25
|
+
processMessage(message);
|
|
26
|
+
} catch (Exception e) {
|
|
27
|
+
log.error("消费失败,发送死信队列: {}", message, e);
|
|
28
|
+
kafkaTemplate.send("order-topic-dlq", message);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
4. **分区数量**:合理设置分区数量,提高并发消费能力(分区数 = 最大并发消费者数)
|
|
34
|
+
|
|
35
|
+
5. **监控告警**:监控消息堆积、消费延迟、分区分布等指标
|
|
36
|
+
|
|
37
|
+
## 注意事项
|
|
38
|
+
|
|
39
|
+
1. **Topic 创建**:使用前需要创建 Topic,或开启 Kafka 自动创建 Topic
|
|
40
|
+
2. **消费者组**:同一消费者组的实例会负载均衡消费消息,不同组会各自消费全量消息
|
|
41
|
+
3. **消息顺序**:同一分区内的消息保证顺序,不同分区不保证
|
|
42
|
+
4. **偏移量管理**:注意偏移量提交时机,`enable-auto-commit: false` 时需手动提交
|
|
43
|
+
5. **消息大小**:默认最大消息大小 1MB,超大消息需调整 `max.message.bytes`
|
|
@@ -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
|
+
```
|