Skip to content

IBM MQ Bindings ​

IBM MQ is a robust, secure, and scalable messaging solution that enables applications, systems, and services to communicate and exchange information. It is a cornerstone of enterprise messaging for countless organizations. The AsyncAPI IBM MQ bindings provide a detailed, standardized way to define your event-driven architectures that rely on IBM MQ.

IBM MQ Protocol Overview ​

IBM MQ provides reliable, asynchronous communication with assured, once-and-only-once delivery of messages. It supports both point-to-point and publish-subscribe messaging models.

Key concepts include:

  • Queue Manager: The central server component of IBM MQ. It hosts queues and topics and is responsible for routing and storing messages.
  • Queues: Destinations for point-to-point messaging, where one application sends a message and another receives it.
  • Topics: Destinations for publish-subscribe messaging, where a message published to a topic is delivered to all subscribed applications.
  • Channels: Communication links used for moving messages between queue managers or between a client application and a queue manager.
  • CCDT (Client Channel Definition Table): A file that contains the connection details for clients, enabling automatic reconnection and workload balancing.

AsyncAPI IBM MQ Bindings ​

The IBM MQ bindings allow you to map AsyncAPI concepts to specific IBM MQ configurations for destinations and connections.

Binding Types ​

Binding TypePurposeDescription
Channel BindingQueue/Topic ConfigurationDefines an AsyncAPI channel as either an IBM MQ Queue or a Topic, with specific properties for each.
Operation Binding(Placeholder)Reserved for future IBM MQ-specific operation properties.
Message BindingMessage Format & HeadersSpecifies the message type (e.g., string, jms, binary) and other message-level properties like expiry.
Server BindingQueue Manager ConnectionDefines the connection to a queue manager, including high-availability settings, and security (cipherSpec).

Supported Versions ​

VersionStatusKey Features
0.1.0LatestProvides comprehensive support for defining IBM MQ queues, topics, message types, and detailed server connection properties.

Core IBM MQ Concepts in AsyncAPI ​

Destinations and Channels ​

An AsyncAPI channel maps to either a Queue or a Topic in IBM MQ. The channel binding is essential for specifying the destination type and its properties, such as objectName, whether a queue is exclusive, or if a topic permits durable subscriptions.

yaml
channels:
  paymentQueue:
    bindings:
      ibmmq:
        bindingVersion: '0.1.0'
        destinationType: 'queue'
        queue:
          objectName: 'PAYMENTS.REQUEST.QUEUE'
          exclusive: false

High Availability (HA) ​

The server binding supports IBM MQ's HA capabilities. You can define a logical groupId for multiple server objects, indicating they are part of a multi-instance queue manager or cluster. This allows clients to use a CCDT for workload balancing and failover.

yaml
servers:
  qmgr-instance-1:
    url: qm1.example.com:1414
    protocol: ibmmq
    bindings:
      ibmmq:
        groupId: 'PROD_QMGR_GROUP'
  qmgr-instance-2:
    url: qm2.example.com:1414
    protocol: ibmmq
    bindings:
      ibmmq:
        groupId: 'PROD_QMGR_GROUP'

Message Types ​

The message binding allows you to specify the type of the message payload, which can be string, jms, or binary. This helps consumers correctly interpret the message body.

Binding Documentation ​

Channel Bindings ​

Operation Bindings ​

Message Bindings ​

Server Bindings ​