AI agents: use the documentation index at llms.txt to locate machine-readable pages. This section is indexed by https://docs.particular.net/transports/llms.txt. The markdown version of this page is served as plain text. An MCP server at /mcp serves the same content via the search_docs and read_doc tools; it is read-only and needs no credentials. Markdown versions of documentation pages are available by appending .md to the page URL. Directory URLs use index.md. They are served as text/plain because some retrieval backends reject text/markdown.

Transaction support

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

The IBM MQ transport supports the following transport transaction modes. Choose a mode based on your requirements for delivery guarantees, performance, and exactly-once processing:

  • Transport transaction - Sends atomic with receive
  • Transport transaction - Receive only (default)
  • Unreliable (transactions disabled)

TransactionScope mode is not supported because the IBM MQ .NET client does not participate in distributed transactions.

Sends atomic with receive

In SendsAtomicWithReceive mode, the message receive and all outgoing send/publish operations are committed or rolled back as a single unit of work.

var transport = new IBMMQTransport
{
    // ... connection settings ...
    TransportTransactionMode = TransportTransactionMode.SendsAtomicWithReceive
};

Receive only

In ReceiveOnly mode, the message receive is transactional. Successfully processed messages are committed. Failed messages are returned to the queue for reprocessing. Outgoing send and publish operations are not part of the receive transaction.

This is the default transaction mode.

var transport = new IBMMQTransport
{
    // ... connection settings ...
    TransportTransactionMode = TransportTransactionMode.ReceiveOnly
};

Unreliable (transactions disabled)

In None mode (transactions disabled), messages are consumed without any transactional guarantees. If processing fails, the message is lost.

var transport = new IBMMQTransport
{
    // ... connection settings ...
    TransportTransactionMode = TransportTransactionMode.None
};