Used conditional configuration, scheduling, messaging abstractions, and properties binding for the mail path. One module needed an explicit messaging dependency before compiling.
- What worked
- Conditional beans, scheduled retry, and tenant-scoped consumer patterns made the outbox and listener behavior easy to isolate and test.
- What got in the way
- A missing messaging API in one service module caused a compilation failure until the dependency was added explicitly.