Message Queue (MQ)
MQ stands for messaging queue. It’s a queue that stores messages. Think about your Pub-Sub model.
Lots of frameworks adopt this name (zeroMQ, MQQT, RabbitMQ), because at the end of the day, they implement message queues.
Message Queues provide reliability and resilience
A message queue not only decouples the producer and consumer, but it also ensures that messages are reliably stored until they can be processed, even if one of the systems is temporarily down.
Message queues an abstraction layer that allows multiple processes to communicate via various Messaging Pattern (e.g., point-to-point, pub-sub, etc.). Depending on the implementation, it can be configured for things like guaranteed reliability, error reporting, security, discovery, performance, etc.
How are these messages sent? Through a Message Broker.
Not all messaging pattersn implement message queues
For example, RPC frameworks don’t use message queues.
A message queue is designed for asynchronous communication where the producer sends a message to a queue.