As explained in the previous section, an asynchronous application will use some kind of queue to hold received yet unprocessed requests till those requests are processed. For this purpose, an in-memory data structure, such as a Java ConcurrentLinkedQueue, can be used. But clearly, this method has limitations, as the queue exists only until the process exists and there is no reliability, durability, fault tolerance, and scalability. This is where message queues come in handy.
There are so many widely used message queues available in both free and open source form as well as proprietary form. The online website of Queues (http://queues.io/) lists many of these widely used queues and can be used as a reference guide to decide the perfect queue for an application.
In the application being developed, however, Apache Kafka will be used as the...