For a couple of days now I’ve been trying to figure out how to tell other microservices that a new entity has been created in microservice A that stores this entity in MongoDB.
I would like to:
At first, a message broker such as RabbitMQ seems to be a good tool to work with, but then I see the problem of fixing a new document in MongoDB and posting a message to a non-atomic broker.
Why is the source of events? by eventuate.io: 
One way to solve this problem is to make the document schema a little messier by adding a note that indicates that the document was published in a broker, and a background process is planned for finding unpublished documents in MongoDB, and then published in the broker using confirmation , when confirmation arrives, the document will be marked as published (using semantics of idempotency at least once). This solution is proposed in this, and these are the answers.
After reading Chris Richardson's Introduction to Microservices , I ended up with a great presentation, Developing Functional Domain Models Using Event Sources, where one of the slides asked:
How to atomically update a database and publish events and publish events without 2PC? (double recording problem).
The answer is simple (on the next slide)
Update the database and post events
This is a different approach to this, which is based on CQRS a la Greg Young .
The domain repository is responsible for publishing events, usually this happens within one transaction along with the storage of events in the event store.
I think delegating responsibility for storing and posting events to the event repository is good because it avoids the need for a 2PC or background process.
However, in a certain way, it is true that :
If you rely on an event repository to post events, you will have a close relationship with the storage engine.
But we could say the same if we adopted a message broker for microservice communications.
What bothers me the most is that the event store seems to be becoming a single point of failure.
If we look at this example from eventuate.io 
we see that if the event store does not work, we cannot create accounts or money transfers, losing one of the advantages of microservices. (although the system will continue to respond to requests).
So, is it correct to state that the event store used in the event example is the only point of failure?