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.

Native message access

Access to the native Azure Storage Queues incoming message

Accessing the native azure storage queue's incoming message from behaviors and handlers can be beneficial for customizations and recoverability. When a message is received, the transport includes the native QueueMessage in the message processing context. You can use the following code to retrieve the message details from a pipeline behavior:

class DoNotAttemptMessageProcessingIfMessageIsNotLocked : Behavior<ITransportReceiveContext>
{
    public override Task Invoke(ITransportReceiveContext context, Func<Task> next)
    {
        var NextVisibleOnUtc = context.Extensions.Get<QueueMessage>().NextVisibleOn;

        if (NextVisibleOnUtc <= DateTime.UtcNow)
        {
            return next();
        }

        throw new Exception($"Message lock lost for MessageId {context.Message.MessageId} and it cannot be processed.");
    }
}

The above behavior utilizes the native message’s NextVisibleOn property to identify when the message lost its lock due to aggressive prefetching and slow processing. If needed, a custom recoverability policy can be implemented to bypass retry attempts that would inevitably fail because of the lost lock.