Add batch-llm module: 100,000 synthetic tickets classified by a ChatClient in a Spring Batch 6 chunk step with Resilience4j rate limiting and retry, skip-and-record for malformed JSON, restart after kill -9 in a second JVM, and a per-chunk cost ledger. The model is a deterministic simulated ChatModel; prices are configurable placeholders. No provider called.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_017ic4b4VQVEJWetTT1dYzyJ
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# What is on the classpath and what the builder offers
|
||||
|
||||
Spring Boot 4.1.2
|
||||
Spring Framework 7.0.10
|
||||
Spring Batch (core) 6.0.6
|
||||
Spring AI (client) 2.0.2
|
||||
Resilience4j 2.4.0
|
||||
Java 25.0.5
|
||||
|
||||
Resilience4j config read from application.yml by resilience4j-spring-boot4:
|
||||
ratelimiter 'llm': limitForPeriod=200 refreshPeriod=PT0.1S timeout=PT1M
|
||||
retry 'llm': maxAttempts=4
|
||||
|
||||
ChunkOrientedStepBuilder methods that matter here (javap of spring-batch-core):
|
||||
faultTolerant []
|
||||
taskExecutor [org.springframework.core.task.AsyncTaskExecutor]
|
||||
retryPolicy [org.springframework.core.retry.RetryPolicy]
|
||||
retry [[Ljava.lang.Class;]
|
||||
retryLimit [long]
|
||||
skip [[Ljava.lang.Class;]
|
||||
skipLimit [long]
|
||||
skipListener [org.springframework.batch.core.listener.SkipListener]
|
||||
processorNonTransactional []
|
||||
Reference in New Issue
Block a user