0

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

Dhatri
  • 3
  • 2
  • Could you please tell me how you define method `RetrieveNextMessageAsync`? – Jim Xu Dec 03 '20 at 14:22
  • Would need more information about RetrieveNextMessageAsync. How does it look? – Tomas Dec 03 '20 at 17:52
  • As far as I knew, in default, if we use V12 SDK to manage Azure queue, the mesage is just UTF-8 string. For more details, please refer to https://github.com/Azure/azure-sdk-for-net/issues/10242#issuecomment-735949498. Could you please check the message encoding vai Microsoft Storage explore? – Jim Xu Dec 07 '20 at 07:05
  • @Dhatri Do you have any updates? – Jim Xu Dec 10 '20 at 08:14

1 Answers1

1

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

Jim Xu
  • 21,610
  • 2
  • 19
  • 39
  • If it is useful for you, could you please [accept it as an answer](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)? – Jim Xu Dec 09 '20 at 05:50