std::queue — это тупо двухсвязный список. А очереди сообщений, это отдельная инфраструктура, которая позволяет общаться как между процессами в пределах одного сервера, так и между серверами, да и между датацентрами. Позволяют организовать полноценную асинхронную работу сложнейших IT систем.
Как видно из изображения есть часть приложения, процесс, отдельное приложение которому требуется обработать сообщение (к примеру отослать email клиенту), второй компонент это непосредственно очередь сообщений в которую помещается сообщение (например запрос на отправку email), и в правой части изображения расположены обработчики сообщений (например email отправщики). В данном случае очередь сообщений позволяет связать различные компоненты системы, внеся при этом асинхронность и возможность сгладить нагрузку (например теперь отправить 1000 email стало гораздо проще)
Да, побольше бы больше конкретики. Например почему сказали только об облачных решениях. Если приложение не использует какую-либо облачную платформу, но нужны очереди. Только ради этого не всегда стоит менять серверную инфраструктуру.
Я так понял пост задумывался как мотиватор к использованию очередей сообщений в проектах. Тогда наверное стоило больше рассказать о подходах к построению архитектуры, основанной на очередях.
Самые простые в использовании/установке/настройке очереди, как по мне, это gearman и rabbitmq, причем последняя имеет плюшки вроде persistent queue, message ttl etc.
Хоть бы классификацию свойств очередей привели — транзакции, coхранение на диск, пересылка по сети, использование координирующего сервера, формат сообщений, дерево топиков, запрос/ответ — или у всех реализаций одни и те же свойства?
Очередь сообщений (Message Queue)