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