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:
2026-10-29 06:10:22 +00:00
co-authored by Claude Sonnet 5.5
parent aa8b1604ed
commit 6d792f00e0
48 changed files with 2093 additions and 0 deletions
+23
View File
@@ -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 []