JMS至少包含三个组成部分:
两个JMS 客户
一个 JMS 服务器
两个JMS客户通过 JMS 服务器相互通信。JMS 客户是使用 JMS API发送和接收消息的常规应用程序。
JMS 服务器可以是任何实现 JMS 规范的应用程序,总体来说,JMS服务器可以分为两种:
一种 JMS 服务器是更大的应用程序的一部分;
一种是专门负责 JMS 任务的应用程序。
对这两种JMS服务器来说,都有很多第三方商业资源和一些开放源代码的 JMS 服务器可供选择使用。
应用程序使用 JMS 相互通信有两个方法可以选用:JMS 主题(topic)和 JMS 队列(queue)。主题和队列只在很少一些方面有区别,两者最明显的区别是它们发送消息的方式不同。
JMS topic从一个 JMS 客户接收消息然后将这些消息分发给所有注册为该topic监听者的 JMS 客户。然而 JMS queue只将消息分发给一个客户,并不管有多少客户注册为该queue的监听者。如果两个或者多个客户注册到一个队列,同时一个消息存储在队列中,那么只有一个客户能接收到这个消息。JMS 规范没有规定哪个客户将接收这个消息。