What's New In Universal Messaging 9.12
Universal Messaging 9.12 is the successor of Universal Messaging 9.10.
Universal Messaging 9.12 includes new features, enhancements, and changes as described in the following topics.
Durable subscribers monitoring and API improvements
Enterprise Manager has improved monitoring of durable subscribers and is now able to display more details for the durable subscribers, including details about the connections currently be used, the EIDs and the number of events outstanding in the queues. This information can now also be accessed via the administration API.
The client API for durable subscribers and named objects has been redesigned to improve performance, robustness and usability. The new durable subscribers API, available from the client API, maps to the existing durable subscribers functionality.
New and enhanced Command Central capabilities
You can now use Command Central to add, edit, delete, administer, and monitor channels (topics) and queues. In addition, you can monitor durable subscribers to easily detect and identify issues such as stalled triggers or processing backlogs.
These capabilities can be accessed using the Command Central web user interface, Command Central command-line interface, and REST API.
The Command Central web user interface now provides the following capabilities:
Create and delete Universal Messaging server instances.
Search for JNDI entries, channels, and queues.
View, create, edit, and delete access control lists (ACLs).
View create, edit, and delete joins for a channel or a queue.
Delete durable subscribers.
Improved handling of low memory situations
New methods for protecting against out-of-memory situations have been introduced to increase the robustness of Universal Messaging under heavy load.
The "event usage" metric provides information on memory currently in use by on-heap events. This includes current on-heap event memory usage, the maximum memory currently available to the JVM, and the percentage of on-heap memory currently in use. These statistics enable monitoring of the current memory usage, allowing action to be taken accordingly.
Universal Messaging servers can now throttle producing connections while processing their events. At predefined, configurable thresholds of on-heap event memory usage, producer connections are throttled, enabling consumers to reduce the number of events on the connections while they are throttled. Connections are more strictly throttled as memory usage rises, helping to prevent out-of-memory situations.
Round-robin message publishing using connection factories for JMS
Horizontal scalability improvements have been introduced with the API for JMS, now allowing the configuration of round-robin connection factories. These factories allow clients to publish messages in a round-robin fashion, so that one message or transaction gets published to the first realm node or cluster, the next message to the next realm node or cluster, and so on.
These connection factories for JMS have the following limitations:
Event consumption is not supported through these factories so, for example, message listeners cannot be registered and consumers cannot be created via the sessions created from these connection factories.
The sessions created through these connection factories do not support distributed (XA) transactions.
For more information consult the JMS-related section of the product documentation.
Logging capabilities enhancements
Support has been added for utilizing the third party logging frameworks Logback and Log4J 2. Both of these testing frameworks offer improved throughput performance when compared to the existing Flogger engine.
Log file entries are now categorized by the component which generated the entry, e.g. Cluster Communications, Joins, etc.
Improved futureproofing for Universal Messaging clients
The client API is now officially supported for use with newer versions of the Universal Messaging server, which means that the 9.12 client API will be supported for use with future versions of UM server.
The client API has been extended in this release with features that were previously only in the administration API (which is not supported for use with newer versions of the server).
ACLs can now be set at store-creation time via the client APIs for Java and C++. This allows basic ACL control for stores without needing to use the administration API.
Setting ACLs at store-creation time has been a typical use for the administration API. These changes allow the client API to be used in a greater number of use cases. The client API is more lightweight than the administration API, and therefore switching to the client API can increase overall system performance and consumed bandwidth.
HTTP drivers support checking of "Origin" headers
The HTTP/WebSocket drivers have been updated to process the Origin header field according to standards proposed in RFC-6454, RFC-6455 and the W3C Cross Origin Resource Sharing document (
https://www.w3.org/TR/cors).
Any nhp/nhps interfaces may have to have their CORS Allowed origins (located under the nhp/nhps Interface -> Javascript tab in Enterprise Manager) altered if an HTTP request has the Origin header field set. Previous versions of Universal Messaging had default values of "localhost, 127.0.0.1" assigned to the CORS Allowed origins field, and would process only host names as values to this field. The current W3C standards now expect any origin to be of the form "<scheme>://<host>:<port>"; for example, "localhost" is an incorrect value, while "http://localhost:11000" is a properly formatted value. The exception is a single value of "*", which indicates that all hosts are permitted access; note that the processing of this value has not changed with the update, and is now the default value in the CORS Allowed origins field whenever an nhp/nhps interface is created.
In addition, support for matching "http://example.com" and "http://example.com:80" as origins (as documented in RFC-6454) is currently not supported. You will need to explicitly white list hosts with *:80 as potential origins (if needed) in addition to others.
Warning of the effects of editing stores
When stores are edited, Universal Messaging deletes and recreates the store and this can disrupt active subscriptions. Enterprise Manager has been updated to display a warning message that the store will be recreated, before a channel edit is performed.
nInterfaceTool extended to allow editing of additional interface settings (e.g. autostart)
The nInterfaceTool has been extended to provide additional capabilities. For example, it now allows you to set interfaces to automatically start when the server starts.
Docker 1.10 support
The Docker kit for Universal Messaging now supports Docker 1.10.
Python and iOS client libraries included in installation
The client libraries for Python and iOS are now included as part of the installation.
UM-tools "runner" is installed as part of the "Template applications" module
The um-tools runner is now part of the installer "Template applications" module rather than the "Server" module. This allows you to install the um-tools runner without installing the server.
Updated version of OpenSSL
Universal Messaging now uses OpenSSL 1.0.2 instead of the previous version 1.0.1.
Platform changes in 9.12
Universal Messaging 9.12 runs on the platforms listed in the Supported Platforms document that is included in the Universal Messaging 9.12 documentation set. You can find this documentation set in the Software AG Documentation web site.
Check the above mentioned Supported Platforms document for details about the newer platform versions supported by Universal Messaging 9.12.
Removed and deprecated features in 9.12
The following Universal Messaging features are now deprecated or have been removed in Universal Messaging 9.12:
Support for Flex has now been removed from Universal Messaging. Flex is a rich internet application (RIA) language which allows the development of complex web applications that run inside a browser. Flex is no longer supported by Adobe Systems Incorporated and has been transferred to the Apache Software Foundation.
Support for P2P has now been removed from Universal Messaging. The API for P2P is a legacy API within Universal Messaging. It allows stream-based communication between two clients mediated by the Broker. This messaging system is no longer useful in the light of more recent and modern paradigms such as DataGroups.