Search code examples
azure-queues

Trying to retrieve Message Text from Azure Queue using web api but message text is encoded. how do i remove encoding


when i retrieve something the output is encoded.

QueueClient queue = new QueueClient(connectionString, "outqueue"); string value = await RetrieveNextMessageAsync(queue);

        return value;

RetrieveNextMessageAsync:

if (await theQueue.ExistsAsync())
        {
            QueueProperties properties = await theQueue.GetPropertiesAsync();

            if (properties.ApproximateMessagesCount > 0)
            {
                QueueMessage[] retrievedMessage = await theQueue.ReceiveMessagesAsync(1);
                string theMessage = retrievedMessage[0].MessageText;
                await theQueue.DeleteMessageAsync(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
                return theMessage;
            }

output: enter image description here


Solution

  • If your message encoding is base64, you can use the following code to retrieve it with package Azure.Storage.Queues

    [HttpGet("getMessage")]
            public async Task<string> GetMessageAsync() {
                string connectionString = "";
                var options = new QueueClientOptions {
                    MessageEncoding= QueueMessageEncoding.Base64
                };
                var queue = new QueueClient(connectionString, "myqueue", options);
               
                var message = await RetrieveNextMessageAsync(queue);
                return message;
            }
            static async Task<string> RetrieveNextMessageAsync(QueueClient theQueue)
            {
                if (await theQueue.ExistsAsync())
                {
                    QueueProperties properties = await theQueue.GetPropertiesAsync();
    
                    if (properties.ApproximateMessagesCount > 0)
                    {
                        QueueMessage[] retrievedMessage = await theQueue.ReceiveMessagesAsync(1);
                        string theMessage = retrievedMessage[0].MessageText;
                        await theQueue.DeleteMessageAsync(retrievedMessage[0].MessageId, retrievedMessage[0].PopReceipt);
                        return theMessage;
                    }
    
                    return null;
                }
    
                return null;
            }
    

    Regarding how to check message encoding, you can use Azure Storage Explorer enter image description here