Publish-Subscribe Pattern vs Message Queues vs Request Response (Detailed Discussions with Examples)