.NET BackgroundService outbox
Implement a reliable outbox publisher using BackgroundService in .NET. What failure modes do you handle?
Answers use simple, clear English.
Quick interview answer
Transactionally write business row + OutboxMessage. BackgroundService polls unpublished rows, publishes to broker, marks sent. Handle: duplicate publish (idempotent consumers), poison messages (retry count + dead letter), graceful shutdown (cancel token), multi-instance (row lock / FOR UPDATE SKIP LOCKED or lease).
Detailed answer
Transactionally write business row + OutboxMessage. BackgroundService polls unpublished rows, publishes to broker, marks sent. Handle: duplicate publish (idempotent consumers), poison messages (retry count + dead letter), graceful shutdown (cancel token), multi-instance (row lock / FOR UPDATE SKIP LOCKED or lease). Metrics on lag.
Real example & use case
OrderCreated outbox → Kafka; worker every 2s with SKIP LOCKED.
Pros & cons
Pros: reliable integration. Cons: polling delay; need idempotent consumers.