CloudQueue.GetMessage Method (TimeSpan)

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.]

Gets a single message from the queue, and specifies how long it should be reserved before it becomes visible—and therefore available for deletion.

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

Usage

Visual Basic
Dim instance As CloudQueue
Dim visibilityTimeout As TimeSpan
Dim returnValue As CloudQueueMessage

returnValue = instance.GetMessage(visibilityTimeout)

Syntax

Visual Basic
Public Function GetMessage ( _
	visibilityTimeout As TimeSpan _
) As CloudQueueMessage
C#
public CloudQueueMessage GetMessage (
	TimeSpan visibilityTimeout
)
C++
public:
CloudQueueMessage^ GetMessage (
	TimeSpan visibilityTimeout
)
J#
JScript

Parameters

visibilityTimeout

Type: System.TimeSpan

The visibility timeout interval.

Return Value

Type: Microsoft.WindowsAzure.StorageClient.CloudQueueMessage

A message.

Example

The following sample code creates a queue, adds some messages to it, and retrieves and deletes the messages.

C# Copy Code
static void CreateQueueAndAddMessages(Uri queueEndpoint, string accountName, string accountKey)
{
    //Create service client for credentialed access to the Queue service.
    CloudQueueClient queueClient = new CloudQueueClient(queueEndpoint,
        new StorageCredentialsAccountAndKey(accountName, accountKey));

    //Get a reference to a queue in this storage account.
    CloudQueue queue = queueClient.GetQueueReference("myqueue");
    //Create the queue if it does not already exist.
    queue.CreateIfNotExist();

    //Clear any existing messages from the queue.
    queue.Clear();

    //Create some new messages.
    CloudQueueMessage msg1 = new CloudQueueMessage("message1");
    CloudQueueMessage msg2 = new CloudQueueMessage("message2");
    CloudQueueMessage msg3 = new CloudQueueMessage("message3");
            
    //Add the messages to the queue.
    queue.AddMessage(msg1);
    queue.AddMessage(msg2);
    //Add the message with a time-to-live of one hour.
    queue.AddMessage(msg3, new TimeSpan(1, 0, 0));

   //Get one message from the queue.
   CloudQueueMessage msgRead = queue.GetMessage();

   //If the message is not null, display it.
   if (msgRead != null)
   {
      Console.WriteLine(msgRead.AsString);
      Console.WriteLine();

      //After reading the message, the client should delete it.
      queue.DeleteMessage(msgRead);
   }
   else
   {
      Console.WriteLine("The queue contains no messages.");
      Console.WriteLine();
   }
                
   //Get up to 10 messages from the queue.
   foreach (var msg in queue.GetMessages(10))
   {
      Console.WriteLine(msg.AsString);
      queue.DeleteMessage(msg);
   }
}

Remarks

The GetMessage method retrieves a single message from the queue. After a message has been retrieved, it should be deleted from the queue. If no messages are visible in the queue, this method returns null immediately.

When a message is retrieved from the queue, its NextVisibleTime and PopReceipt properties are updated with values provided by the service. The NextVisibleTime indicates the next time that the message will be available to be read, if it is not deleted by the client that retrieved it. This value is calculated by adding the value of the visibilityTimeout parameter to the time at which the message was retrieved. The maximum value that may be specified for the visibilityTimeout parameter is two hours.

The PopReceipt value indicates that the message has been read and is used to verify that the message being deleted is the same one that was retrieved.

After a client retrieves a message, that message is reserved for deletion until the date and time indicated by the message's NextVisibleTime property, and no other client may retrieve the message during that time interval. If the message is not deleted before the time specified by the NextVisibleTime property, it again becomes visible to other clients. If the message is not subsequently retrieved and deleted by another client, the client that retrieved it can still delete it.

When a message is retrieved for the first time, its DequeueCount property is set to 1. If it is not deleted and is subsequently retrieved again, the DequeueCount property is incremented. The client may use this value to determine how many times a message has been retrieved.


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