This document discusses message queues (MQ) and their use for microservices. It defines MQ as a mechanism that supports asynchronous message passing between application processes. The key benefits of using MQ for microservices are that it allows for high availability, scalability, and handling new/stopped services. The document compares different MQ protocols and implementations like AMQP, MQTT, Kafka, and ZeroMQ. It provides examples of how companies like Yahoo Japan, IBM and OpenStack use MQ. Performance-oriented MQs like NewtMQ and NATS are also discussed. The conclusion is that NATS is better for microservices if its restrictions can be permitted, but the best choice depends on the specific application requirements.