public function publishQeued(array $eventQeueObjects): bool
    {
        $eventStreamObjects = array_map(function ($eventQeueObject) {
            /* @var EventQeueObject $eventQeueObject */
            return $eventQeueObject->getEventStreamObject();
        }, $eventQeueObjects);

        /**
         * Add EventStreamObjects to list of EventStreamObjects that should be persisted.
         *
         * @var EventStreamObject $eventStreamObject
         */
        foreach ($eventStreamObjects as $eventStreamObject) {
            $this->eventStore->add($eventStreamObject);
        }

        try {
            $this->eventStore->save();

            // Notify subscribers.
            $this->sendAggregateUpdates($eventStreamObjects);
        } catch (\Exception $e) {
            // Saving to the Event Store failed. This can happen for example when an aggregate version is already taken.
            $this->messageBus->dispatch(new Message(
                $e->getMessage(),
                $e->getCode(),
                null,
                null,
                $e
            ));

            return false;
        }

        /**
         * Remove EventQeueObjects from qeue.
         *
         * @var EventQeueObject $eventQeueObject
         */
        foreach ($eventQeueObjects as $eventQeueObject) {
            $this->eventStore->remove($eventQeueObject);
        }

        try {
            $this->eventStore->save();

            return true;
        } catch (\Exception $e) {
            // Removal from the Event Qeue failed.
            $this->messageBus->dispatch(new Message(
                $e->getMessage(),
                $e->getCode(),
                null,
                null,
                $e
            ));

            return false;
        }
    }