With all Domain Events persisted into the database, the only thing remaining to spread the news is to push them to our favorite messaging system. We prefer RabbitMQ, but any other system, such as ActiveMQ or ZeroMQ, will do the job. For integrating with RabbitMQ using PHP, there aren't many options, but php-amqplib will do the work.
First of all, we need a service capable of sending persisted Domain Events to RabbitMQ. You may want to query EventStore for all the Events and send each one, which isn't a bad idea. However, we could push the same Domain Event more than once, and generally speaking, we need to minimize the number of Domain Events republished. If the number of Domain Events republished is 0, that's even better. In order ...