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。
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 心得
...