I'm building an event handler/dispatcher for my monolith, aiming to slowly replace big parts of it by delegating jobs to other systems via events. For example, sending emails when a customer buys something, or sending an SMS, or updating cache information on CouchDB after someone makes a modification in the control panel.For my prototype, I have created a ZeroMQ queue that receives messages from my monolith, with the event and its payload. A NodeJS application is waiting for those messages, and after reading them, decides what to do, which usually involves sending an HTTP request to another system with the payload.Is this architecture sufficient? Should I switch ZeroMQ to Kafka in order to guarantee message delivery. 
Fault-tolerant, distributed, event dispatcher architecture?
message queue;etl;apache kafka