JMS point to point: sender, receiver, queue. messages are held until receiver connects. pub/sub: publishers, subscribers, topics. subscriber can specify durable subscription for messages to be held while it is offline. synchronous: receive() asynchronous: message listener's onMessage() destination: queue or topic producer: sender or publisher consumer: receiver or subscriber session: single-threaded