Getting Started

Azure Storage Queues transport native integration sample

Target Version: NServiceBus 9.x
This page targets a pre-release version. Pre-releases are subject to change and samples are not guaranteed to be fully functional.


Ensure an instance of the Azurite Storage Emulator is running.

Azure Storage Queues transport

This sample uses the Azure Storage Queues transport.

Code walk-through

This sample shows a simple two-endpoint scenario.

  • NativeSender sends a NativeMessage message to Receiver
  • Receiver receiving and printing out the contents of the received message.

Sending a native message

NativeSender creates and sends a queue message with a JSON serialized NativeMessage payload.

var nativeMessage = new NativeMessage
    Content = $"Hello from native sender @ {DateTimeOffset.Now}"

var serializedMessage = JsonSerializer.Serialize(nativeMessage);

await queueClient.SendMessageAsync(serializedMessage).ConfigureAwait(false);

Receiving a native message

To process a native message, the native QueueMessage has to be adapted to the NServiceBus MessageWrapper first. To accomplish this, a custom envelope unwrapper must be registered to provide the following:

  1. Message ID to associate with the incoming message
  2. Serialized message payload as a byte array
  3. Determine the native message type and assign it as an NServiceBus header
transport.MessageUnwrapper = message => new MessageWrapper
    Id = message.MessageId,
    Body = message.Body.ToArray(),
    Headers = new Dictionary<string, string>
                { Headers.EnclosedMessageTypes, typeof(NativeMessage).FullName }
Message type could be determined dynamically by reading the payload if different message types are sent natively.

Related Articles

Last modified