Spring AI + Spring Batch: Classifying 100,000 Support Tickets with an LLM (Throttling, Retries, Cost)
A Spring Batch 6 chunk step calls a Spring AI ChatClient for 100,000 generated support tickets. Resilience4j rate limiting and retry, skip-and-record for malformed JSON, a restart after kill -9 in a second JVM that ends byte-identical, and a per-chunk cost ledger, all run against a deterministic simulated model with every number taken from a committed transcript.