Writing XMS applications

The topics in this section provide information to help you when writing XMS applications in general.


This section contains general concepts for writing XMS applications. See also Writing XMS .NET applications for information specific to creating XMS .NET applications.

From IBM MQ Version 9.2.0, the number of XMS.NET dynamic link libraries has been significantly reduced, to a total of five. The five dynamic link libraries are:

  • IBM.XMS.dll - includes all the national language messages
  • IBM.XMS.Comms.RMM.dll
  • Three policy dynamic link libraries:
    • policy.8.0.IBM.XMS.dll
    • policy.9.0.IBM.XMS.dll
    • policy.9.1.IBM.XMS.dll

XMS .NET

Multicast messaging (using RMM) is deprecated from Version 9.2 and will be removed in a future release of XMS .NET.

  • Use the IBM MQ XMS .NET project template
    Use a project template to develop an XMS .NET Core application.

  • The threading model
    General rules govern how a multithreaded application can use XMS objects.

  • ConnectionFactories and Connection objects
    A ConnectionFactory object provides a template that an application uses to create a Connection object. The application uses the Connection object to create a Session object.

  • Sessions
    A session is a single threaded context for sending and receiving messages.

  • Destinations
    An XMS application uses a Destination object to specify the destination of messages that are being sent, and the source of messages that are being received.

  • Message producers
    In XMS, a message producer can be created either with a valid destination or with no associated destination. When creating a message producer with a null destination, a valid destination needs to be specified when sending a message.

  • Message consumers
    Message consumers can be classified as durable and non-durable subscribers and synchronous and asynchronous message consumers.

  • Queue browsers
    An application uses a queue browser to browse messages on a queue without removing them.

  • Requestors
    An application uses a requestor to send a request message and then to wait for and to receive the reply.

  • Object deletion
    When an application deletes an XMS object that it created, XMS releases the internal resources that have been allocated to the object.

  • Managed IBM MQ XA transactions through XMS
    Managed IBM MQ XA transactions can be used through XMS.

  • XMS primitive types
    XMS provides equivalents of the eight Java primitive types (byte, short, int, long, float, double, char, and boolean). This allows the interchange of messages between XMS and JMS without data becoming lost or corrupted.

  • Implicit conversion of a property value from one data type to another
    When an application gets the value of a property, the value can be converted by XMS into another data type. Many rules govern which conversions are supported and how XMS performs the conversions.

  • Iterators
    An iterator encapsulates a list of objects and a cursor that maintains the current position in the list. The concept of an Iterator, as available in IBM Message Service Client for C/C++, is implemented by using IEnumerator interface in IBM Message Service Client for .NET.

  • Coded character set identifiers
    In XMS .NET, all strings are passed using the native .NET string. Because this has a fixed encoding, no further information is required to interpret it. Hence the XMSC_CLIENT_CCSID property is not required for XMS .NET applications.

  • XMS error and exception codes
    XMS uses a range of error codes to indicate failures. These error codes are not explicitly listed in this documentation because they may vary from release to release. Only XMS exception codes (in the format XMS_X_...) are documented because they remain the same across releases of XMS.

  • Automatic IBM MQ Client reconnection through XMS
    Configure your XMS client to reconnect automatically following a network, queue manager, or server failure while using IBM WebSphere MQ Version 7.1 client and later, as the message provider.

Parent topic: Developing XMS .NET applications