Open
Description
Right now all interactions between components happen directly. While this does work, it creates a network of dependencies between the components that doesn't really need to exist and adds complexity to understanding how things interact.
It might be worth adding a message broker of sorts (i.e. RabbitMQ) between the components to reduce the aforementioned complexity, and also to ensure that messages aren't lost in the event that a component goes down.