CloudWatch observation and application-error discussion. 3–4. Interface + constructor injection + in-memory fake. 5. Controlled failing fake + partial-failure analysis. 6. Bounded retries + recovery/exhaustion tests + idempotency discussion. 7. Full regression test results and GitHub PR evidence. No new AWS resources; no live failure injection; submit code through a PR.
controlled test double—not a real SNS failure. public final class FailingPublisher implements EventPublisher { private int attempts; public void publish(String id, String json) { attempts++; if (attempts < 3) throw new TransientPublishException("SNS unavailable"); } public int attempts() { return attempts; } } 16
2026 Copyright Notice. These slides are provided exclusively for educational use in CSC 5100 within the California State University system. Redistribution or use for any other purpose is prohibited without prior written permission.