A mechanism called a message queue enables two or more programs to exchange messages. Decoupling application components helps systems be more scalable, maintainable, and reliable. Applications can interact asynchronously using message queues, which means that the sender need not wait for the recipient to respond before continuing.