Enterprise Architecture · Enterprise
Production Hardening Checklist
Essential production configurations that prevent common failures in Kafka-based Spring Boot services.
spring:
kafka:
bootstrap-servers: ${KAFKA_BROKERS} # From environment
producer:
acks: all
retries: 2147483647 # Effectively infinite
properties:
enable.idempotence: true
max.in.flight.requests.per.connection: 5
max.block.ms: 10000 # 10s before throwing if buffer full
delivery.timeout.ms: 120000 # 2 minute total delivery timeout
compression.type: lz4
linger.ms: 5
batch.size: 65536 # 64KB
consumer:
enable-auto-commit: false
max-poll-records: 500
properties:
max.poll.interval.ms: 300000 # 5 minutes
session.timeout.ms: 45000
heartbeat.interval.ms: 15000
fetch.min.bytes: 1
fetch.max.wait.ms: 500
isolation.level: read_committed # If consuming from transactional topics
listener:
ack-mode: BATCH
missing-topics-fatal: false # Don't fail if topic missing at startup
concurrency: ${KAFKA_CONCURRENCY:3}
idle-event-interval: 60000 # Log idle consumers every 60s
admin:
properties:
request.timeout.ms: 30000@Component
public class KafkaHealthIndicator implements HealthIndicator {
private final KafkaAdmin kafkaAdmin;
@Override
public Health health() {
try {
// Check if we can connect to bootstrap servers
kafkaAdmin.describeTopics("__consumer_offsets");
return Health.up()
.withDetail("cluster", "reachable")
.build();
} catch (Exception e) {
return Health.down(e)
.withDetail("cluster", "unreachable")
.build();
}
}
}