Chapter 1 . New and Changed Features

This chapter describes new and changed features of MessageQ for UNIX Version 4.0A, 4.0, 3.2B, 3.2A and 3.2.


Before You Install MessageQ Version 4.0A

This section describes important information that you need to know before you install MessageQ for UNIX, Version 4.0A.


New and Changed Features in MessageQ Version 4.0A

This section describes the new and changed features for Version 4.0A release of MessageQ for UNIX:


New and Changed Features in MessageQ Version 4.0

This section describes the new and changes features for Version 4.0 release of MessageQ for UNIX:

Changes to the MessageQ Include Files

The following changes have been made to the MessageQ include files:

Elimination of the Bus Control Process

To create greater consistency of environment configuration between platforms, the bus control process has been eliminated from MessageQ configuration on UNIX systems. For Version 4.0, users configure each group using the dmqinit.txt file and start each group using the MessageQ startup procedure called "dmqstartup." Users can duplicate the capability of the bus initialization file by creating a shell script that starts multiple groups on the same node.

Addition of Group Shutdown Utility

MessageQ now includes a procedure for immediately shutting down message queuing groups from the command line. Enter "dmqshutdown" with the bus and group number to shut down a group.

Message Broadcasting on all Platforms

The ability to distribute broadcast messages to any number of registered recipients is now available on all MessageQ message server implementations. The default configuration for each MessageQ Version 4.0 group enables the use of Selective Broadcast Services (SBS). Note that the SBS Server must be enabled in order for the message queuing group to provide AVAIL/UNAVAIL services.

Self-describing Messaging

Self-describing messaging (SDM) provides a new form of MessageQ messaging. Previously, MessageQ applications passed information using a message buffer whose format and structure were agreed upon by the sender and receiver program. SDM enables applications to construct messages containing both the message content and the information needed by the receiver program to understand what is in the message. The receiver program dynamically interprets the contents of the message by "decoding" some or all of the data contained in it. SDM also provides automatic data marshaling between platforms that use different data formats.

SDM consists of the following new API functions:

pams_create_handle

Creates a handle for handle-based messsages.

pams_decode_<data_type>

Decodes a self-descring message for data of the specified type.

pams_delete_handle

Deletes a message handle.

pams_encode_<data_type>

Encodes a self-describing message for data of the specified type.

pams_extract_buffer

Extracts a message from a handle into a message buffer.

pams_insert_buffer

Inserts a message buffer into a message handle.

pams_msg_length

Returns the number of bytes in the message. The message is identified by a message handle created with the pams_create_handle function.

pams_next_msg_field

Returns the tag and length of the first unseen field in the message.

pams_remove_encoding

Removes a previously encoded field from the message buffer.

pams_set_msg_position

Resets the message to the position of a specific tag.

For information on how to use SDM, refer to the BEA MessageQ Programmer's Guide.

Support for Large Messages

MessageQ can now send and receive messages of up to 4MB using buffer-style and handle-style messages. Note that the time necessary to send a message is directly proportional to the size of the message. User applications must be designed to wait an appropriate length of time for a message to be delivered. The delivery period is a function of the delivery mode, uma, and message size.

In the case of cross-group messaging, user applications must also factor possible network latencies into the delivery interval. In the case of recoverable messages, users applications must also factor disk I/O into the message delivery interval.

In addition, system load can also be a factor in the delivery period for queued messages. In some instances, the total amount of time necessary to deliver a message may exceed the default timeout of 30 seconds for the pams_put_msg function. Refer to the BEA MessageQ Programmer's Guide for more information on how to use this feature.

Dynamic Binding of Queue Address to Local and Global Queue References

MessageQ Version 4.0 adds a new API function called pams_bind_q. This API function has been added to enable applications to associate a queue address with local and global queue names.

Global Naming

Global naming enables MessageQ applications to refer to message queues in remote groups by name without having to define the name in each referring group's initialization file.

Changes to Group Configuration

The following changes have been made to the group initialization file on UNIX:

Ability to Change Configuration Data at Runtime

MessageQ now enables users to change configuration data for groups and queues at runtime. Previously, a group had to be shut down and restarted to enable changes to group configuration. Now users can make required changes to the initialization file for the group and invoke the MessageQ Loader program to change the configuration of a running group. Refer to the MessageQ Installation and Configuration Guide for UNIX for information on which parameters can be changed at runtime and how to run the Loader utility.

Changes to PAMS API Functions

The following PAMS API functions have been changed for Version 4.0:

pams_attach_q and

pams_locate_q

have changed to allow look up of global queue references. In addition, the first null argument has been replaced with a timeout argument so that the time allotted for this function to complete can be controlled. The data type of this argument has changed from char * to int32 * which should not affect the running of existing applications. However depending upon the programming language and compiler you are using, you may receive warning or error messages. To eliminate these warnings or error messages during compilation or runtime, update your applications to use the correct data type for this argument and rebuild your application. Beginning with Version 4.0. the following values to the name_space_list argument are supported but obsolete:
PSEL_TBL_DNS_CACHE
PSEL_TBL_DNS_LOW
PSEL_TBL_DNS_MEDIUM
PSEL_TBL_DNS_HIGH

pams_get_msg and

pams_get_msgw

incorporate a change to the msg_area_len and len_data arguments that allow the use of the symbol PSYM_MSG_HANDLE to indicate that the message is a handle, not a buffer. Message handles are used to send handle-style and self-describing messages.

Also includes a change to the msg_area_len and len_data arguments that allows the use of the symbol PSYM_MSG_LARGE to indicate that the message buffer is larger than 32K. The large_area_len argument supplies the size of the message buffer to receive messages larger than 32K. The actual size of the large message is specified in the large_size argument.

pams_put_msg

incorporates a change to the msg_size argument that allows the use of the symbol PSYM_MSG_HANDLE to indicate that the message is a handle, not a buffer. Message handles are used to send handle-style and self-describing messages.

Also includes a change to the msg_size argument that allows the use of the symbol PSYM_MSG_LARGE to indicate that the message buffer is larger than 32K. The pointer to the buffer is contained in the msg_area argument and the size of the large message buffer is contained in the large_size argument.

Refer to the BEA MessageQ Programmer's Guide for complete reference description of these new and changed programming functions.

Starting and Stopping Groups, Queues, Links and the CLS

MessageQ Version 4.0 adds features for stopping groups and queues orderly and fast, starting queues, and starting and stopping cross-group connections and the Client Library Server using the Monitor utility. The following options are available through both the character-cell and Motif-based Monitor utility.

Refer to the MessageQ Installation and Configuration Guide for more information on how to use each of these features.

Enhancements to Message Recovery

Message Recovery Services on MessageQ for UNIX systems offer significant performance improvements over Version 3.2. In addition, MessageQ for UNIX now enables users to selectively receive recoverable messages by specifying the in-memory queue depth of recoverable messages.

Support for Link Management API Messages

MessageQ for UNIX Version 4.0 will support the link management API functions that are currently supported on OpenVMS systems. These functions include:

Refer to the BEA MessageQ Programmer's Guide for information on how to use each of these request and response messages.

Distribution of Documentation Online

All MessageQ manuals have been revised for Version 4.0. The following manuals are available online as HTML files:

To use the online documentation, you must install the optional subset called "Online Documentation." Once installed, invoke a World Wide Web browser, and use the "Open File" option to open the following files:

/usr/kits/DMA400/books/bookshelf.html    (Digital UNIX)
or
/usr/kits/DMQ400/books/bookshelf.html (all other UNIX systems)

Changes to pams_set_timer Function

MessageQ now returns the error code PAMS__BADPARAM if the p_timeout argument of the pams_set_timer is specified as zero or a negative number. In addition, the pams_set_timer function returns an error code if the timer_id argument is set to zero.

In addition, the s_timeout argument now supports the use of the system time format as well as the PAMS time format. Refer to the BEA MessageQ Programmer's Guide for more information on how to use this API function.

Change to Parameter Setting for Group-wide Memory

The ability to set a group-wide memory threshold has been replaced with the ability to set a group-wide memory limit. Rather than logging warnings and continuing to grow, the group server will return a PAMS__EXCEEDQUOTA status for a message that would cause the limit to be exceeded.

To set the limit, use the GROUP_MAX_BYTES property in the %PROFILE section of the group initialization file. To set a limit that corresponds to the threshold you used with MessageQ Version 3.x, simply set GROUP_MAX_BYTES to the value in the Threshold column of the group's entry in the %XGROUP section. If you do not set a value for GROUP_MAX_BYTES, the default value of 8388608 will be used.

Change to ENABLE_NOTIFY Message

The ENABLE_NOTIFY message supports notification when cross-group messages are established and lost. It no longer supports notification of primary queue attachments and detachments. Therefore, the use of the attachment_flag is no longer a valid field in the message. Applications using the attachment_flag field will not compile under MessageQ for UNIX, Version 4.0. ApplicationS requiring notification of queue attachments and detachments should use the ENABLE_Q_NOTIFY_REQ.

Change to AVAIL Services Deregistration

MessageQ for UNIX Version 4.0 incorporates a change to the behavior of AVAIL Services deregistration to provide compability among all MessageQ servers implementations. Applications running under MessageQ for UNIX Version 4.0 must now explicitly cancel AVAIL Services registration using the AVAIL_DEREG message. AVAIL Services registrations will no longer be cancelled automatically by MessageQ when the requestor process exits. Instead, the only automatic cancellation of registration message occurs when the distribution queue becomes unavailable.


New and Changed Features in MessageQ
Versions 3.2, 3.2A and 3.2B

This section describes the following new features of MessageQ for UNIX software implemented in the version 3.2, 3.2A and V3.2B release:

Improved Message Recovery Capabilities

The on-disk structure of journals has changed to improve message recovery capabilities when disk crashes or power failures occur.

Improved Message Recovery Performance

Message Recovery performance has been increased on all UNIX platforms. Performance increases vary by processor type, operating system and delivery mode. Significant improvements in message throughput have been measured during product testing.

Changes to Return Codes for Version 3.2A

The PAMS__DECNETDEAD return code is obsolete and has been removed from the p_return.h file. If your application references this return code, you must remove it, then recompile and relink your application.

Changes to Message Recovery Services

This section describes changes to Message Recovery Services.

Support for NCR UNIX Systems

MessageQ for UNIX, Version 3.2 runs on AT&T 3430 processors under NCR UNIX.

Addition of MessageQ UNIX Client

The MessageQ for UNIX installation procedure now includes an option for installing the MessageQ UNIX Client. The MessageQ UNIX Client allows applications running in a UNIX environment to send and receive messages to target applications in a networked environment using the MessageQ Client Library Server software running on a MessageQ server system.

The MessageQ UNIX Client provides applications with full support of MessageQ features without requiring the system resources needed by a MessageQ UNIX message server that supports full message routing. User applications designed as clients or servers can be deployed on systems running MessageQ Client software.

Changes to UNIX Kernel Configuration Settings

MessageQ for UNIX, Version 3.2 requires changes to the documented UNIX kernel configuration settings as follows:

For information on how to set UNIX kernel parameters, refer to the MessageQ Installation and Configuration Guide for UNIX.

New API Function Returns Text Description of Return Status

Version 3.2 of MessageQ for UNIX systems contains a new API function called pams_status_text. Application developers can use this API function to obtain a descriptive text string and a severity level for each API return value.

This function receives the status value and returns a text description in the following format:

PAMS__SUCCESS, normal successful completion

The text description contains the text name of the return code (as it appears in the documentation and development include files) followed by a comma, a space, and then a status description. If the user buffer is large enough, the string is zero terminated. In addition to the text description, this function returns a code indicating the severity level for both success and error messages. Severity levels are designed to provide more information about the message being returned.

For example, the pams_detach_q has two of the possible success return codes; PAMS__SUCCESS and PAMS__DETACHED. The PAMS__SUCCESS return code is used to indicate that you successfully detached the specified queue(s). PAMS__DETACHED is an informational return code indicating that the call was successful and that you have detached your last queue (which effectively detaches you from the message bus in the same manner as a call to pams_exit).

Following are the valid severity codes for MessageQ messages and their meaning:

Change to Behavior of Cross-Group Connections

MessageQ for UNIX Version 3.2B includes a change to the behavior of cross-group connections. In previous versions of MessageQ, when a group tried to connect to a specific system and the hostname was not translatable by the network name service, the result was a fatal error.

In Version 3.2B, the group now logs the error and continues to try to create the cross-group connection. The advantage to this change is that manual intervention is no longer required in order to reissue the reconnection request. In addition, the continuous retry feature enables the connection to automatically become established when the network error condition is resolved.