Table of Contents

Class AzureQueue<TRequest>

Namespace
Savvyio.Extensions.QueueStorage
Assembly
Savvyio.Extensions.QueueStorage.dll

Represents the base class from which all implementations of Azure Storage Queue should derive.

public abstract class AzureQueue<TRequest> where TRequest : IRequest

Type Parameters

TRequest

The type of the request.

Inheritance
AzureQueue<TRequest>
Derived

Constructors

AzureQueue(IMarshaller, AzureQueueOptions, Func<IMessage<TRequest>, IMarshaller, string>, Func<QueueMessage, IMarshaller, IMessage<TRequest>>)

Initializes a new instance of the AzureQueue<TRequest> class.

protected AzureQueue(IMarshaller marshaller, AzureQueueOptions options, Func<IMessage<TRequest>, IMarshaller, string> sendMessageFormatter = null, Func<QueueMessage, IMarshaller, IMessage<TRequest>> receiveMessageFormatter = null)

Parameters

marshaller IMarshaller

The marshaller used for serializing and deserializing messages.

options AzureQueueOptions

The AzureQueueOptions used to configure this instance.

sendMessageFormatter Func<IMessage<TRequest>, IMarshaller, string>

The function delegate to format messages for sending. If null, a default formatter is used.

receiveMessageFormatter Func<QueueMessage, IMarshaller, IMessage<TRequest>>

The function delegate to format messages for receiving. If null, a default formatter is used.

Remarks

The following table shows the initial field values for an instance of AzureQueue<TRequest>.

FieldInitial Value
Savvyio.Extensions.QueueStorage.AzureQueue<TRequest>._sendMessageFormatter
        <pre><code class="lang-csharp">(message, marshaller) =>
            {
                var base64Type = message.GetType()
                    .ToFullNameIncludingAssemblyName()
                    .ToByteArray()
                    .ToBase64String();
                var base64Message = marshaller.Serialize(message)
                    .ToByteArray()
                    .ToBase64String();
                return $"{base64Type}.{base64Message}";
            };</code></pre>
    </td></tr><tr><td class="term"><xref href="Savvyio.Extensions.QueueStorage.AzureQueue%601._receiveMessageFormatter" data-throw-if-not-resolved="false"></xref></td><td class="description">

        <pre><code class="lang-csharp">(rawMessage, marshaller) =>
            {
                var base64Components = rawMessage.MessageText.Split('.');
                var type = Type.GetType(base64Components[0].FromBase64().ToEncodedString());
                return marshaller.Deserialize(base64Components[1].FromBase64().ToStream(), type) as IMessage<TRequest>;
            };</code></pre>
    </td></tr></tbody></table>

Exceptions

ArgumentNullException

marshaller cannot be null - or - options cannot be null.

ArgumentException

options are not in a valid state.

Methods

ReceiveMessagesAsync(Action<AsyncOptions>)

Receives messages from the Azure Storage Queue.

protected IAsyncEnumerable<IMessage<TRequest>> ReceiveMessagesAsync(Action<AsyncOptions> setup = null)

Parameters

setup Action<AsyncOptions>

The AsyncOptions which may be configured.

Returns

IAsyncEnumerable<IMessage<TRequest>>

A task that represents the asynchronous operation. The task result contains a sequence of IMessage<T> whose generic type argument is TRequest.

SendMessageAsync(IEnumerable<IMessage<TRequest>>, Action<AsyncOptions>)

Sends the specified messages to the Azure Storage Queue.

protected Task SendMessageAsync(IEnumerable<IMessage<TRequest>> messages, Action<AsyncOptions> setup = null)

Parameters

messages IEnumerable<IMessage<TRequest>>

The messages to send.

setup Action<AsyncOptions>

The AsyncOptions which may be configured.

Returns

Task

A task that represents the asynchronous operation.

Exceptions

ArgumentNullException

messages cannot be null.