Azure Learn AZ-204 The Hard Way | 實作 AZ-204 Lab 10 Azure Service Bus Queues

2022-03-25

實作 AZ-204 證照測驗準備的實驗課程,從實驗課程中精熟 AZ-204 的測驗重點以及工具操作。本次要實驗的是如何使用 Azure Azure Service Bus Queues。

logo

Lab10 - Azure Service Bus Queues

詳細的實驗流程可以參考微軟在 GitHub上的專案

圖片來源:微軟

Create Service Bus Queue

建立 Service Bus Queue sbnamespacecs 並從 Shared access policies 複製 Primary Connection String 待會的程式端需要使用,

完成後建立一個 Queue messagequeue

Messages Publish Console

dotnet new console --name MessagePublisher --output .
dotnet add package Azure.Messaging.ServiceBus --version 7.2.1
dotnet build

將 queue 的 Connection String 以及 queueName 輸入。

Program.cs

using System;
using System.Threading.Tasks;
using Azure.Messaging.ServiceBus;

namespace MessagePublisher
{
    public class Program
    {
        private const string storageConnectionString = "<storage-connection-string>";
        private const string queueName = "messagequeue";
        private const int numOfMessages = 3;

        static ServiceBusClient client;
        static ServiceBusSender sender;

        public static async Task Main(string[] args)
        {
            client = new ServiceBusClient(storageConnectionString);
            sender = client.CreateSender(queueName);

            using ServiceBusMessageBatch messageBatch = 
              await sender.CreateMessageBatchAsync();

            for (int i = 1; i <= numOfMessages; i++)
            {
                if (!messageBatch.TryAddMessage(new ServiceBusMessage($"Message {i}")))
                {
                    throw new Exception(
                      $"The message {i} is too large to fit in the batch."
                    );
                }
            }

            try
            {
                await sender.SendMessagesAsync(messageBatch);
                Console.WriteLine(
                  $"A batch of {numOfMessages} messages has been published to the queue."
                );
            }
            finally
            {
                await sender.DisposeAsync();
                await client.DisposeAsync();
            }
        }
    }
}

執行 Console 將訊息發佈到 Event Bus Queue

dotnet run

從 Event Buq Queue 可以觀察到相關資訊:

Message Reader Console

dotnet new console --name MessageReader --output .
dotnet add package Azure.Messaging.ServiceBus --version 7.2.1
dotnet build

Program.cs

using System;
using System.Threading.Tasks;
using Azure.Messaging.ServiceBus;

namespace MessagePublisher
{
    public class Program
    {
        private const string storageConnectionString = "*";
        private const string queueName = "messagequeue";
        private const int numOfMessages = 3;

        static ServiceBusClient client;
        static ServiceBusSender sender;

        public static async Task Main(string[] args)
        {
            client = new ServiceBusClient(storageConnectionString);
            sender = client.CreateSender(queueName);

            using ServiceBusMessageBatch messageBatch = 
              await sender.CreateMessageBatchAsync();

            for (int i = 1; i <= numOfMessages; i++)
            {
                if (!messageBatch.TryAddMessage
                  (new ServiceBusMessage($"Message {i}")))
                {
                    throw new Exception($"The message {i} is too large to fit in the batch.");
                }
            }

            try
            {
                await sender.SendMessagesAsync(messageBatch);
                Console.WriteLine($"A batch of {numOfMessages} messages has been published to the queue.");
            }
            finally
            {
                await sender.DisposeAsync();
                await client.DisposeAsync();
            }
        }
    }
}

執行後可以將之前的訊息全部讀出:

Azure Azure Service Bus Queues 相關知識

...

實戰 Azure Azure Service Bus Queues 心得

...