The Message Queue service fully implements the JMS 1.1 specification for reliable, asynchronous, flexible message delivery For information about JMS compliance-related issues, see Appendix A, Message Queue Implementation of Optional JMS Functionality However, Message Queue has capabilities and features that exceed JMS requirements. You can use these features to integrate and monitor systems consisting of large numbers of distributed components exchanging many thousands of messages in round-the-clock, mission-critical operations.
This book has introduced these features in the process of describing the Message Queue service. For your convenience, this appendix provides a summary of Message Queue features: each feature is briefly described, the work required to use the feature is summarized, and references are provided to sections in this book that introduce these features and to the specific documents in the Message Queue documentation set that describe these features in detail.
Message Queue’s features, listed alphabetically in Appendix B, Message Queue Features, can be roughly divided into the categories shown below.
Integration Support
HTTP connections
Secure connections
C client support
SOAP support
J2EE resource adapters
Security
Authentication
Authorization
Encryption (see Secure connections)
Scalability
Thread management
Broker clusters
Queue delivery to multiple consumers
Availability
Memory resource management
Message flow control to clients
Automatic reconnect
Reliable data persistence
Connection ping
Manageability
Administration tools
Message-based monitoring API
Tunable performance
Configurable physical destinations
Broker configurations
Dead message queue
Performance
Message compression
Tunable performance
Configurable physical destinations
Flexible Server Configuration
Configurable persistence
LDAP server support
JNDI server support
Feature |
Description and Reference |
---|---|
Administration tools |
The Message Queue service includes GUI and command line tools for managing destinations, transactions, durable subscriptions, administered object stores, user repositories, JDBC-compliant data stores, and server certificates. Reference |
Authentication |
Authenticate users seeking a connection to the broker. The Message Queue service allows users to connect to the broker by validating their name and password against values stored in a user repository. The repository can be a flat-file repository shipped with Message Queue or an LDAP repository (LDAP v2 or v3 protocol). To Use
Reference Authentication and Authorization. Chapter 7, Managing Security, in Sun Java System Message Queue 3.7 UR1 Administration Guide. |
Authorization |
Authorize users to perform specific operations. The Message Queue service allows you to create an access control properties file that specifies the operations users and groups of users can perform. The broker checks this file when a client seeks to create a connection, create a producer, create a consumer, or browse a queue. To Use Edit the access control properties file that is automatically created for the broker instance. Reference Authentication and Authorization Chapter 7, Managing Security, in Sun Java System Message Queue 3.7 UR1 Administration Guide. |
Automatic reconnect |
The administrator sets connection attributes on the connection factory administered object to enable automatic reconnection in the event of connection failure. Reconnection can be to the same broker or to another broker in a cluster if a cluster is used. You can specify how many times to try reconnection and the interval between attempts. For clustered brokers, you can also specify how often to iterate through a list of brokers and whether to iterate through the list in a specific order. Reference |
Broker clusters |
The administrator can balance client connections and message delivery across a number of broker instances by grouping those instances into a broker cluster. To Use
Reference |
Broker configuration |
The administrator can set broker properties to tune Message Queue service performance. This includes routing services, persistence services, security, monitoring, and administered object management. Reference Chapter 3, Message Queue Service Chapter 4, Configuring a Broker, in Sun Java System Message Queue 3.7 UR1 Administration Guide |
C client support |
C clients can use Message Queue messaging services to send and receive messages. The C API enables legacy C applications and C++ applications to participate in JMS-based messaging. Message Queue’s C API is supported by a C client runtime that supports most of the standard JMS functionality, with the exception of the following: the use of administered objects; map, stream, or object message body types; distributed transactions; and queue browsers. The C client runtime also does not support most of Message Queue’s enterprise features. Reference Sun Java System Message Queue 3.7 UR1 Developer’s Guide for C Clients |
Compressed messages |
Java clients can set a message property to have the client runtime compress a message being sent. The runtime on the consumer side decompresses the message before it delivers it to the consumer. Additional properties are provided that you can use to determine whether compressing messages would actually improve performance. Reference Managing Message Size in Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients. |
Configurable persistence |
The administrator can configure the broker to use the file-based persistent store provided with Message Queue or a JDBC-compliant database, such as Oracle 8i. To Use Set broker properties that relate to file-system persistent storage or JDBC-compliant storage. Reference Configuring a Persistent Data Store in Sun Java System Message Queue 3.7 UR1 Administration Guide. |
Configurable physical destinations |
The administrator can define some messaging behavior by setting physical destination properties when creating destinations. The following behavior can be configured for any destination: the maximum number of unconsumed messages or the maximum amount of memory allowed for such messages, which messages the broker should reject when memory limits are reached, the maximum number of producers and consumers, the maximum message size, the maximum number of messages delivered in a single batch, whether the destination can deliver only to local consumers, and whether dead messages on the destination can be moved to the dead message queue. Reference |
Connection ping |
The administrator can set a connection factory attribute to specify the frequency of a ping operation from the client runtime to the broker. This allows the client to preemptively detect a failed connection. Reference Connection Services in Sun Java System Message Queue 3.7 UR1 Administration Guide. |
Dead message queue |
The Message Queue message service creates the dead message queue to hold messages that have expired or that the broker could not process. You can examine the contents of the queue to monitor, tune, or troubleshoot system performance. Reference |
HTTP connections |
Java clients can create HTTP connections to the broker. HTTP transport allows messages to be delivered through firewalls. Message Queue implements HTTP support using an HTTP tunnel servlet that runs in a web server environment. Messages produced by a client are wrapped by the client runtime as HTTP requests and delivered over HTTP through a firewall to the tunnel servlet. The tunnel servlet extracts the JMS message from the HTTP request and delivers the message over TCP/IP to the broker. To Use
Reference Appendix C, HTTP/HTTPS Support, in Sun Java System Message Queue 3.7 UR1 Administration Guide |
Interactive monitoring |
The administrator can use the imqcmd metrics command to monitor a broker remotely. Monitored data includes JVM metrics, broker message flow, connections, connection resources, messages, destination message flow, destination consumers, destination resource use. Reference Chapter 10, Monitoring a Broker, in Sun Java System Message Queue 3.7 UR1 Administration Guide |
J2EE resource adapters |
Message Queue provides a resource adapter that can be plugged into a J2EE-compliant application server. By using Message Queue as a JMS provider, an application server meets the J2EE requirement that distributed components running in the application server be able to interact using reliable, asynchronous message. To Use Configure the adapter by setting adapter attributes. Reference |
JNDI service provider support |
Clients can look up administered objects using the JNDI API. Administrators can use the imqobjmgr utility to add, list, update, and delete administered objects in an object store accessible using JNDI. Reference |
LDAP Server support |
The administrator can use LDAP servers for administered object store and for storing user information needed for authentication and authorization. By default Message Queue provides file-based storage for this data. To Use for Administered Objects
Reference Chapter 7, Managing Security, in Sun Java System Message Queue 3.7 UR1 Administration Guide To Use for User Repository
Reference Chapter 7, Managing Security, in Sun Java System Message Queue 3.7 UR1 Administration Guide |
Memory resource management |
The administrator can configure the following behavior:
Reference Destinations and Routing Services. Chapter 4, Configuring a Broker, in Sun Java System Message Queue 3.7 UR1 Administration Guide |
Message compression |
The developer can set a message header property to have the client runtime compress a message before sending it. The consumer's client runtime decompresses the message before delivering it to the consumer. Reference Message Compression in Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients |
Message flow control to clients |
The administrator or the developer can configure a connection to specify various flow limits and metering schemes to minimize the collision of payload and control messages, and thereby to maximize message throughput. To Use Set the flow-control attributes for the connection factory administered object (administrator), or set the flow-control properties for the connection factory (developer). Reference Connection Factories and Connections. Connection Services in Sun Java System Message Queue 3.7 UR1 Administration Guide. Connection Factory Attributes in Sun Java System Message Queue 3.7 UR1 Administration Guide |
Message-based monitoring API |
Java clients can use a monitoring API to create custom monitoring applications. A monitoring application is a consumer that retrieves metrics messages from special metrics topic destinations. To Use
Reference Chapter 10, Monitoring a Broker, in Sun Java System Message Queue 3.7 UR1 Administration Guide. |
Queue delivery to multiple consumers |
Clients can register more than one consumer for a given queue. The administrator can specify the maximum number of active consumers and the maximum number of backup consumers for the queue. The broker distributes messages to the registered consumers, balancing the load among them in order to allow the system to scale. To Use Set physical destination properties maxNumActiveConsumers and maxNumBackupConsumers. Reference |
Reliable data persistence |
To obtain absolute reliability you can require that the operating system write the data synchronously to the persistent store by setting the imq.persist.file.sync.enabled property to true. This eliminates possible data loss due to system crashes, but at the expense of performance. Note that although the data is not lost, it is not available to any other broker (in a cluster) because data is not currently shared by clustered brokers. When the system comes back up, the broker can reliably resume operations. Reference Persistence Properties in Sun Java System Message Queue 3.7 UR1 Administration Guide . |
Secure connections |
Clients can secure transmission of messages using the Secure Socket Layer (SSL) standard over TCP/IP and HTTP transports. These SSL-based connection services allow for the encryption of messages sent between clients and broker. SSL support is based on self-signed server certificates. Message Queue provides a utility that generates a private/public key pair and embeds the public key in a self-signed certificate. This certificate is passed to any client requesting a connection to the broker, and the client uses the certificate to set up an encrypted connection. To Use
Reference Chapter 7, Managing Security, in Sun Java System Message Queue 3.7 UR1 Administration Guide. |
SOAP support |
Clients can receive SOAP (XML) messages and they can wrap them as JMS messages and use Message Queue to exchange them as they would a JMS message. Clients can use a special servlet to receive SOAP messages; they can use a utility class to wrap a SOAP message as a JMS message; they can use another utility class to extract the SOAP message from the JMS message. Clients can use standard SAAJ libraries to assemble and disassemble a SOAP message. Reference “Working With SOAP Message,” Chapter 5, Working with SOAP Messages, in Sun Java System Message Queue 3.7 UR1 Developer’s Guide for Java Clients. |
Thread management |
The administrator can specify the maximum and minimum number of threads assigned to any specific connection service. The administrator can also determine whether a connection service could increase throughput by using a shared thread model, which allows threads dedicated to idle connections to be used by other connections. To Use Set connection service thread-related properties. Reference Chapter 4, Configuring a Broker, in Sun Java System Message Queue 3.7 UR1 Administration Guide. |
Tunable performance |
The administrator can set broker properties to adjust memory usage, threading resources, message flow, connection services, reliability parameters, and other elements that affect message throughput and system performance. Reference Monitoring Services in Sun Java System Message Queue 3.7 UR1 Administration Guide |