2.2. Enhancements

qpid-cpp

588504 - [RFE] [MRG] Messaging broker to listen only on SSL port
The MRG Messaging Broker is now able to require SSL connections. This feature is required to allow customers to comply with some security policies. The MRG Messaging Broker can now be prohibited from listening for regular TCP connections by specifying `--listen-disable tcp` on the broker command line, or by using the equivalent configuration file option.
771830 - Enable high resolution timestamps for qpidd logs using QMF and a qpidd option.

It is now possible to enable or disable high resolution log time stamps while the broker is running. If time stamps are set to low resolution then many issues cannot be diagnosed effectively. Restarting the broker to enable high resolution time stamps was often not an option for users.
572456 - [Feature request] Provide the possibility to choose the network interface to bind qpidd.

In MRG Messaging 3.0, it is now possible to select the network interface to bind qpidd to. This allows customers to restrict the networks to which qpidd is exposed. This may be used as part of the security policy of the installation. Customers can now use the qpidd --interface command to bind qpidd to a network interface, but not a specific port. This command is documented in the "General Broker Options" section of the Messaging Installation and Configuration Guide.
768114 - Enable TCP_NODELAY by default

The qpid C++ clients and broker now deactivate the Nagle algorithm by default. The Nagle algorithm improves the connection bandwidth by sacrificing some latency. Under most circumstances, using qpid will achieve identical or improved performance with the Nagle algorithm deactivated. Where this is not the case, the algorithm can be enabled by specifying the --tcp-nodelay=no option on the command line for the broker, or tcp_nodelay=no in the configuration file. This enhancement should result in a performance improvement for most user configurations. This feature is documented in the "General Broker Options" section of the Messaging Installation and Configuration Guide.
949014 - Setting --ack value on Federation links forces a fixed finite credit limit.

This feature allows credit level configuration on Federation connections. By default, the credit level was fixed to unlimited, or forced to twice the --ack value (if specified). There was no other way to configure the credit level. The user can now better tune the performance of the Federation link by specifying custom credit levels. This feature is documented in the "qpid Route Options" section of the Messaging Installation and Configuration Guide.
797092 - Support log category exclusion

Logs are sometimes flooded by thousands of log messages that may not be considered important during issue investigation. It is now possible to specify a broker option that turns off log messages using precise filters. During problem investigation, users can control log file content to better understand a specific issue, rather than manually filtering out extraneous log events. The feature is supported in the C++ Broker, by specifying --log-disable.
808105 - ACL syntax does not allow specifying '' exchange

ACL PUBLISH EXCHANGE rules now have a simplified way to refer to the nameless default exchange. In situations where the default exchange requires ACL rules, it is now possible to name the unnamed exchange by specifying the keyword amq.default in the ACL rule syntax.
709325 - Possibility to create queue files dynamically and resizing queues without deleting them

A new store implementation named Linearstore replaces Legacystore in this release. Linearstore addresses limitations imposed by Legacystore, specifically its use of fixed circular file buffers for queue journals. Linearstore utilizes a pool of fixed-size empty journal files and appends the journal files to a queue journal in a linear manner. The file is returned to the pool once a journal file is cleared of messages, and has no preceding journal files with messages waiting. There are a number of changes between Legacystore and Linearstore users must be aware of. See Comment 33 in the original Bugzilla Enhancement for further usage caveats and migration limitations. This information will be migrated to formal user documentation shortly after the 3.0 Release.
874516 - [RFE] Per-user configurable limit on the number of active connections

It is now possible to configure the active connection limit for individual users. Having one setting for all users was identified as being insufficient: Administrators and Broker monitors require many connections while public clients must be limited to few connections. With the new scheme, individual users can now have connection limits set through the ACL file. Both users, and groups of users can now be configured to receive many or few connections (including zero connections if this is applicable).
885207 - Move all qpid config files under the qpid config dir

The qpidd.conf file has changed locations in MRG Messaging 3.0. This change improves consistency by moving Qpid daemon and client configuration under one location. The config file is installed to /etc/qpid/qpidd.conf, and the broker now uses this new qpidd.conf file. If any changes were made to the old qpidd.conf file, it is preserved as /etc/qpidd.conf.rpmsave to allow any configuration to be migrated into the new file manually.
915821 - RFE: Support per user queue quotas in ACL file

It is now possible to specify queue quotas on a per-user basis in the ACL file. The normal approach of making a single command line switch available for setting queue quotas was insufficient: Administrators need to create many queues and normal users must be constrained to fewer or none. With the settings available in the ACL file, each user, group of users, or all otherwise unnamed users can be given a different quota. A quota value of zero prevents the user from creating any queues.
955674 - ACL delete action should not ignore object's properties other than name

Users can now further restrict ACL rules with respect to the queues and exchanges they are allowed to delete. It is now possible to allow or deny access to deleting queues and exchanges based on durability and other settings. Restricting queue and exchange deletion prevents users from interfering with each other in a broker.
691411 - [RFE] mechanism to detect when messages are overwritten in ring-type queues

Because users need to be able to determine when a ring queue was full and further writes would overwrite older messages, it is now possible to store and retrieve a queue level sequence number in message properties. Enabling queue sequence numbers allows gap detection in the sequence numbers, which indicate that messages were overwritten. Sequence numbers are retrieved from the message properties using the same user defined key. The feature is enabled by declaring a queue with argument qpid.queue_msg_sequence set to the user-defined key. There is no persistence support in this implementation: sequence numbers are reset after a broker restart.
453539 - Support message selectors

MRG Messaging C components now include support for Message Selectors. Other languages had support for selectors, but C was missing this. Customers required this functionality in the product. Selector support is now available in the 0-10 and 1-0 protocols for the C++ messaging client and broker code, and implements the selector language with some limitations. This feature is documented in the "Select Messages Using a Filter" section of the Messaging Programming Reference Guide.
824988 - [RFE] Federated link heartbeat interval is hard coded to 120 seconds

This Enhancement introduces a configurable link heartbeat interval for the qpidd broker. In a worst-case scenario, the previous heartbeat default of 120 seconds would result in a system recovery under 240 seconds. For High Availability environments, this amount of time was considered to be too long, and a user-configurable time in seconds was required. The qpid broker now has an option link-heartbeat-interval, which allows a custom heartbeat interval (in seconds) to be configured. This feature is documented in the "Broker HA Options" section in the Messaging Installation and Configuration Guide.
862899 - [RFE] Extend the qpidd --wait option to work at shutdown

It is now possible to use the --wait option available in C++ Brokers to control both startup and shutdown wait times. Brokers with large databases and process spaces may take longer than the hard-coded 10 seconds to shut down successfully. Enabling the --wait option to use it’s value in the shutdown timer allows users to specify the shutdown wait time beyond 10 seconds. This allows users to successfully shut down large-scale brokers without error.

qpid-tools

710429 - qpid-cluster, qpid-tool and qmf-tool do not allow SASL mechanism to be chosen

The qpid-tool did not allow the SASL mechanism to be chosen on the command line. It was not possible to override the default logic of choosing the most secure method available. The enhancement adds the --sasl-mechanism and --ssl-certificate command line options. The SASL mechanism and certificate file can now be specified on the command line to override the default.
915774 - qpid-tool to have -b option as other qpid tools

To align qpid-tool with functionality provided by other qpid tools, a "-b" command line option is now available to specify a broker address. The parameter takes the same form as the other qpid tools.