This article explains JMS architecture, message models, messaging domains and various components in a JMS system. It begins with the basics and explains some powerful yet not well known techniques and concepts. Techniques like pausing message delivery, selecting messages etc explained.