Persisting Events is always a good idea. Some of you may be wondering why you shouldn't publish Domain Events directly to a messaging or logging system. This is because persisting them has interesting benefits:
- You can expose your Domain Events to other Bounded Contexts through a REST interface.
- You can persist the Domain Event and the Aggregate changes in the same database transaction before pushing them to RabbitMQ. (You don't want to send notifications about something that didn't happen, just as you don't want to miss a notification about something that did happen.)
- Business Intelligence can use this data to analyze, forecast, or trend.
- You can audit your Entity changes.
- For Event Sourcing, you can reconstitute Aggregates from Domain Events.