Getting Started
Architecture
NServiceBus
Transports
Persistence
ServiceInsight
ServicePulse
ServiceControl
Monitoring
Modernization
Samples

IBM MQ Transport

NuGet Package: NServiceBus.Transport.IBMMQ 1.x
Target Version: NServiceBus 10.x

Integrates NServiceBus with IBM MQ using the IBM MQ .NET client.

Broker version compatibility

The transport requires IBM MQ 9.0 or later. IBM guarantees that any supported MQ client can connect to any supported queue manager, regardless of version.

The transport ships the IBM-provided managed .NET client (IBMMQDotnetClient) and tracks the latest Continuous Delivery (CD) or Cumulative Security Update (CSU) release rather than pinning to a Long Term Support (LTS) fix pack. The managed client is wire-compatible with LTS queue managers, so customers on an LTS queue manager receive the newest client-side fixes through transport upgrades without needing to change their queue manager.

IBM MQ does not follow SemVer; it uses a four-segment V.R.M.F scheme with parallel LTS and CD streams. See the IBM MQ versioning FAQ for the full scheme and the IBM product lifecycle page for supported-version dates.

Transport at a glance

Feature
TransactionsNone, ReceiveOnly, SendsAtomicWithReceive
Pub/SubNative
TimeoutsNot natively supported
Large message bodiesDetermined by queue manager MAXMSGL setting
Scale-outCompeting consumer
Scripted DeploymentSupported via CLI tool
InstallersOptional
Native integrationSupported
OpenTelemetry tracingSupported
Case SensitiveYes
TransactionScope mode (distributed transactions)No
SSL/TLS encryption and certificate-based authenticationYes
Queue and topic namesLimited to 48 characters
Delayed deliveryNo. Requires an external timeout storage mechanism.
Native message groupingNot yet implemented

Configuring the endpoint

To use IBM MQ as the underlying transport:

var endpointConfiguration = new EndpointConfiguration("MyEndpoint");

var transport = new IBMMQTransport
{
    Host = "mq-server.example.com",
    Port = 1414,
    Channel = "DEV.APP.SVRCONN",
    QueueManagerName = "QM1",
    User = "app",
    Password = "passw0rd"
};

endpointConfiguration.UseTransport(transport);

See connection settings for all available connection and configuration options.

Message persistence

By default, all messages are sent as persistent, meaning they survive queue manager restarts. Messages marked as non-durable are sent as non-persistent for higher throughput.

Samples

Related Articles