Message Queue 4.3 was a minor release that included a number of feature enhancements and bug fixes. This section describes the new features included in this release:
Message Queue 4.3 introduces a new universal messaging service (UMS) and messaging API that provides access to Message Queue from any http-enabled device. As a result, almost any application can communicate with any other application and benefit from the reliability and guaranteed delivery of JMS messaging. In addition, the UMS provides enhanced scalability for JMS messaging, allowing the number of messaging clients to reach internet-scale proportions.
The basic UMS architecture is shown in the following figure:
The UMS, which runs in a web server, is language neutral and platform independent. The UMS serves as a gateway between any non-JMS client application and a JMS provider. It receives messages sent using the UMS API, transforms them into JMS messages, and produces them to destinations in the JMS provider by way of the provider's native protocol. Similarly, it retrieves messages from destinations in the JMS provider, transforms them into text or SOAP messages, and sends the messages to non-JMS clients as requested by the clients through the UMS API.
The simple, language-independent, protocol-based UMS API supports both Web-based and non-Web-based applications, and can be used with both scripting and programming languages. The API is offered in two styles: a simple messaging API that uses a Representational State Transfer (REST)-style protocol, and an XML messaging API that embeds the protocol in a SOAP message header. In both cases, however, the API requires only a single http request to send or receive a message.
The simplicity and flexibility of the UMS API means that AJAX, .NET, Python, C, Java, and many other applications can send text message and/or SOAP (with attachment) messages to JMS destinations or receive messages from JMS destinations. For example, Python applications can communicate with .NET applications, iPhone can communicate with Java applications, and so forth.
For Message Queue 4.3, the UMS supports only Message Queue as a JMS provider.
The UMS serves as more than the simple gateway described above. It supports stateful as well as stateless client sessions. If requested by the client, the UMS will maintain session state for the client application across multiple service requests. The UMS can use container-managed authentication, or be configured to authenticate clients with the Message Queue broker, or both. The UMS also supports transactions, enabling client applications to commit or roll back multiple service requests as a single atomic unit.
Because the UMS can support a large number of clients on a single connection to the Message Queue broker, it eases the load on the broker's connection services, allowing for maximum scalability. In addition, UMS capacity can be increased by horizontal scaling, allowing for internet-scale messaging loads.
On the client side, because of the simplicity of the protocol-based UMS API, no client libraries are required. As a result, the API can be extended in the future to implement additional JMS features without any need to upgrade client applications.
To use the UMS, you deploy the UMS into a web container that supports Servlet 2.4 or later specifications, start the Message Queue broker, create the appropriate destinations, and write a messaging application that uses the UMS API to send or receive messages.
The UMS imqums.war file, contained in the Message Queue 4.3 distribution, is installed in the following location, depending on platform:
You can rename the .war file as appropriate.
Table 1–5 Location of imqums.war file
Platform |
Location of imqums.war |
---|---|
Solaris |
/usr/share/lib/imq |
Linux |
/opt/sun/mq/share/lib |
AIX |
IMQ_HOME/lib |
Windows |
IMQ_HOME\lib |
After you have deployed the imqums.war into a web container at localhost:port, you can find UMS documentation at:
http://localhost:port/imqums
Otherwise you can find UMS documentation as follows:
For information on configuring the UMS, see https://mq.dev.java.net/4.3-content/ums/config.html.
For documentation of the UMS API, see https://mq.dev.java.net/4.3-content/ums/protocol.html.
For programming examples in several languages, see https://mq.dev.java.net/4.3-content/ums/examples/README.html.
UMS is currently supported on the following web containers:
Sun GlassFish Enterprise Server, Version 2.1 and Version 3 Prelude
Tomcat, Versions 5.5 and 6.0
Message Queue 4.3 provides AIX platform packages and an Installer for installing them).
The Message Queue AIX implementation supports the following software:
AIX v 6.1 or higher (earlier versions of AIX are supported via the Unix/Java Only bundle)
DB2 support
IBM XL C/C++ Compiler V9.0
JDK 1.5 or better
For installation instructions, see Chapter 4, AIX Installation, in Sun Java System Message Queue 4.3 Installation Guide.
On the AIX platform, Message Queue files are installed under a single Message Queue home directory, IMQ_HOME. IMQ_HOME denotes the directory mqInstallHome/mq, where mqInstallHome is the installation home directory you specify when installing the product (by default, home-directory/MessageQueue).
The resulting Message Queue directory structure is the same as that for the Windows platform (see the Windows section of Appendix A, Platform-Specific Locations of Message Queue Data, in Sun GlassFish Message Queue 4.4 Administration Guide.)
Message Queue support for the AIX platform includes support for the Message Queue C-API. For instructions on building and compiling C applications on the AIX platform, see XREF.
Message Queue 4.3 introduces a new installer for Zip-based distributions, as opposed to native package distributions. The installer is used to install the new Message Queue .zip distributions for the AIX platform.
The new installer extracts Message Queue .zip files to any directory for which you have write access (you do not need root privileges) and it also enables you to register your Message Queue installation with Sun Connection.
To minimize the size of download bundles, the Java Runtime is no longer be included in the zip-based distribution (most sites will already have it). As a result, the installer command requires that a JDK or JRE be specified, either by using the JAVA_HOME environment variable or by using the -j option on the command line, as follows:
$ installer -j JDK/JRE-path
where JDK/JRE-path is the path of the specified JDK or JRE.
The following updated platform support will be certified for Message Queue 4.3:
Oracle 11g
Windows Server 2008
The following additional enhancements are included in Message Queue 4.3:
The installed directory structure for Message Queue on the Windows platform has been modified from previous versions to match that of the AIX platform. This directory structure will be adopted as well by the Solaris and Linux platforms in the future, to facilitate multiple installations on single computer and automatic update of Message Queue through Sun Connection, a Sun-hosted service that helps you track, organize, and maintain Sun hardware and software (see Installer Support for Sun Connection Registration).
The following new properties are available for configuring a broker:
Table 1–6 Broker Routing and Delivery Properties
Property |
Type |
Default Value |
Description |
---|---|---|---|
imq.transaction.producer.maxNumMsgs |
Integer |
1000 |
The maximum number of messages that a producer can process in a single transaction. It is recommended that the value be less than 5000 to prevent the exhausting of resources. |
imq.transaction.consumer.maxNumMsgs |
Integer |
100 |
The maximum number of messages that a consumer can process in a single transaction. It is recommended that the value be less than 1000 to prevent the exhausting of resources. |
imq.persist.jdbc.connection.limit |
Integer |
5 |
The maximum number of connections that can be opened to the database. |
A new attribute and composite data keys have been added to the JMX API as follows:
A NextMessageID attribute has been added to the Destination Monitor MBean to provide the JMS message ID of the next message to be delivered to a consumer.
A NextMessageID key for composite date has been added to the Consumer Manager Monitor MBean to provide the JMS message ID of the next message to be delivered to the consumer.
A NumMsgsPending key for composite date has been added to the Consumer Manager Monitor MBean to provide the number of messages that have been dispatched to the consumer.
For more information see Chapter 3, Message Queue MBean Reference, in Sun GlassFish Message Queue 4.4 Developer’s Guide for JMX Clients.
The command for listing durable subscriptions:
list dur [-d topicName]
has been enhanced to make specification of the topic name optional. If the topic is not specified, the command lists all durable subscriptions for all topics (including those with wildcard naming conventions)