Could anyone recommend alternatives to 2 phases commits to have the persistence of aggregates happen in the same transaction as the dispatching of related domain events in a non-event-sourced DDD application?
One approach I've tried is to persist the aggregates along with the asynchronous events in the same ACID RDBMS instance, and then have processes poll the events for processing. This works well as long as you don't need several RDBMS instances or non-ACID databases as a write store.