CloudQueue.BeginAddMessage Method (CloudQueueMessage, TimeSpan, AsyncCallback, Object)

Storage Client Library NET API

[This topic is part of the Microsoft Azure Storage Client Library 1.7, which has been deprecated. See Storage Client Library for the latest version.]

Begins an asynchronous operation to add a message to the queue, with a value specifying how long it can remain in the queue.

Namespace: Microsoft.WindowsAzure.StorageClient
Assembly: Microsoft.WindowsAzure.StorageClient (in Microsoft.WindowsAzure.StorageClient.dll)

Usage

Visual Basic
Dim instance As CloudQueue
Dim message As CloudQueueMessage
Dim timeToLive As TimeSpan
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult

returnValue = instance.BeginAddMessage(message, timeToLive, callback, state)

Syntax

Visual Basic
Public Function BeginAddMessage ( _
	message As CloudQueueMessage, _
	timeToLive As TimeSpan, _
	callback As AsyncCallback, _
	state As Object _
) As IAsyncResult
C#
public IAsyncResult BeginAddMessage (
	CloudQueueMessage message,
	TimeSpan timeToLive,
	AsyncCallback callback,
	Object state
)
C++
public:
IAsyncResult^ BeginAddMessage (
	CloudQueueMessage^ message, 
	TimeSpan timeToLive, 
	AsyncCallback^ callback, 
	Object^ state
)
J#
JScript

Parameters

message

Type: Microsoft.WindowsAzure.StorageClient.CloudQueueMessage

A message.

timeToLive

Type: System.TimeSpan

A value indicating the message time-to-live.

callback

Type: System.AsyncCallback

The callback delegate that will receive notification when the asynchronous operation completes.

state

Type: System.Object

A user-defined object that will be passed to the callback delegate.

Return Value

Type: System.IAsyncResult

An IAsyncResult that references the asynchronous operation.

Example

The following code example illustrates using state when making an asynchronous call.

C# Copy Code
using System;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;

namespace QueueAsyncExample
{
  public class QueueAsyncStateExample
  {
    public CloudQueue queueObject;
    public object customStateInformation;

    // Constructor for the example state class
    public QueueAsyncStateExample( CloudQueue queue, object yourAdditionalStateObject )
    {
      this.queueObject = queue;
      this.customStateInformation = yourAdditionalStateObject;
    }

    // Static call that starts adding a message with no delay for visibility and no expiration
    static void AddMessageAsync( string messageString, CloudQueue queue, object stateObject )
    {
      queue.BeginAddMessage( new CloudQueueMessage( messageString ),
                             QueueAddMessageCallback,
                             new QueueAsyncStateExample( queue, stateObject ) );
    }

    // Static call that starts adding a message 
    // and specifies how long the message should stay in the queue before being deleted (its "time to live")
    static void AddMessageAsync( string msgString, 
                                 TimeSpan messageTimeToLive, 
                                 CloudQueue queue, 
                                 object stateObject )
    {
      queue.BeginAddMessage( new CloudQueueMessage( msgString ),
                             messageTimeToLive,
                             QueueAddMessageCallback,
                             new QueueAsyncStateExample( queue, stateObject ) );
    }

    // Static call that starts adding a message 
    // and specifies how long the message should stay in the queue before being deleted  (its "time to live")
    // and specifies how long to wait before the message can be retrieved from the queue (its "initial visibility delay")
    static void AddMessageAsync( string messageString, 
                                 TimeSpan msgTimeToLive, 
                                 TimeSpan timeBeforeMessageIsVisible, 
                                 CloudQueue queue, 
                                 object stateObject )
    {
      queue.BeginAddMessage( new CloudQueueMessage( messageString ),
                             msgTimeToLive,
                             timeBeforeMessageIsVisible,
                             QueueAddMessageCallback,
                             new QueueAsyncStateExample( queue, stateObject ) );
    }

    // The callback method that is called once the add-message operation is complete
    static void QueueAddMessageCallback( IAsyncResult opResult )
    {
      QueueAsyncStateExample state = (QueueAsyncStateExample) opResult.AsyncState;
      CloudQueue queue = state.queueObject;
      // End the BeginAddMessage operation
      queue.EndAddMessage( opResult );
      // ...other asynchronous operations could be started here if appropriate
    }
  }
}

Remarks

The BeginAddMessage method begins an operation to add a message to the back of the queue. However, because the operation is asynchronous, do not rely on the order in which messages are added to the queue.

A message can be up to 64 KB in size for SDK version 1.6 or newer, or 8 KB in size for older SDK versions. The storage client library encodes the message content using Base64 when EncodeMessage is set to true, its default. Encode messages if message content can contain characters that are invalid in XML.

Note
Encoding with Base64 adds overhead to the message size. You can use Convert.ToBase64String() to verify content encoded with Base64 fits within the 64 KB message size limit.


Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

Windows Vista, Windows 7, Windows Server 2008, Windows 8.1, Windows Server 2012 R2, Windows 8 and Windows Server 2012

Change History

See Also