Sun Java System Message Queue 4.3 Developer's Guide for Java Clients

Choosing Messaging Domains

As described in Messaging Domains in Sun Java System Message Queue 4.3 Technical Overview, JMS supports two distinct message delivery models: point-to-point and publish/subscribe. These two message delivery models can be handled using different API objects—with slightly different semantics—representing different programming domains, as shown in Table 3–1, or they can be handled by base (unified domain) types.

Table 3–1 JMS Programming Objects

Unified Domain 

Point-to-Point Domain 

Publish/Subscribe Domain 

Destination (Queue or Topic) 

Queue 

Topic 

ConnectionFactory 

QueueConnectionFactory 

TopicConnectionFactory 

Connection 

QueueConnection 

TopicConnection 

Session 

QueueSession 

TopicSession 

MessageProducer 

QueueSender 

TopicPublisher 

MessageConsumer 

QueueReceiver 

TopicSubscriber 

Using the point-to-point or publish/subscribe domains offers the advantage of a clean API that prevents certain types of programming errors; for example, creating a durable subscriber for a queue destination. However, the non-unified domains have the disadvantage that you cannot combine point-to-point and publish/subscribe operations in the same transaction or in the same session. If you need to do that, you should choose the unified domain API.

The JMS 1.1 specification continues to support the separate JMS 1.02 programming domains. (The example applications included with the Message Queue product as well as the code examples provided in this book all use the separate JMS 1.02 programming domains.) You can choose the API that best suits your needs. The only exception are those developers needing to write clients for the Sun Java System Application Server 7 environment, as explained in the following note.


Note –

Developers of applications that run in the Sun Java System Application Server 7 environment are limited to using the JMS 1.0.2 API. This is because Sun Java System Application Server 7 complies with the J2EE 1.3 specification, which supports only JMS 1.0.2. Any JMS messaging performed in servlets and EJBs—including message-driven beans must be based on the domain-specific JMS APIs and cannot use the JMS 1.1 unified domain APIs. Developers of J2EE applications that will run in J2EE 1.4-compliant servers can, however, use the simpler JMS 1.1 APIs.