Latihan: Mengirim dan menerima pesan dari antrean Azure Service Bus dengan menggunakan .NET.
Dalam latihan ini Anda mempelajari cara:
- Membuat namespace layanan Azure Service Bus, dan antrean, menggunakan Azure CLI.
- Buat aplikasi konsol .NET untuk mengirim dan menerima pesan dari antrean.
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda belum memilikinya, Anda dapat mendaftar uji coba gratis di https://azure.com/free .
- Visual Studio Code di salah satu platform yang didukung.
- Ekstensi C# untuk Visual Studio Code.
- .NET 6 adalah kerangka kerja target untuk latihan.
Masuk ke Azure
Di bagian ini, Anda membuka terminal dan membuat beberapa variabel yang digunakan di seluruh latihan lainnya untuk membuat entri perintah, dan pembuatan nama sumber daya yang unik, sedikit lebih mudah.
Luncurkan Azure Cloud Shell dan pilih Bash serta lingkungan.
Buat variabel yang digunakan dalam perintah Azure CLI. Ganti
<myLocation>
dengan wilayah di dekat Anda.myLocation=<myLocation> myNameSpaceName=az204svcbus$RANDOM
Membuat sumber daya Azure
Buat grup sumber daya untuk menyimpan sumber daya Azure yang Sedang Anda buat.
az group create --name az204-svcbus-rg --location $myLocation
Buat namespace layanan olahpesan Azure Service Bus. Perintah berikut membuat namespace layanan menggunakan variabel yang Anda buat sebelumnya. Operasi ini membutuhkan waktu beberapa menit untuk diselesaikan.
az servicebus namespace create \ --resource-group az204-svcbus-rg \ --name $myNameSpaceName \ --location $myLocation
Membuat antrean Bus Layanan
az servicebus queue create --resource-group az204-svcbus-rg \ --namespace-name $myNameSpaceName \ --name az204-queue
Mengambil string koneksi untuk Namespace layanan Azure Service Bus
Buka portal Azure dan buka grup sumber daya az204-svcbus-rg.
Pilih sumber daya az204svcbus yang Anda buat.
Pilih Kebijakan akses bersama di bagian Pengaturan, lalu pilih kebijakan RootManageSharedAccessKey.
Salin String Koneksi Primer dari kotak dialog yang terbuka dan simpan ke file, atau biarkan portal terbuka dan salin kunci jika diperlukan.
Membuat aplikasi konsol untuk mengirim pesan ke antrean
Buka terminal lokal dan buat, serta ubah ke, direktori bernama az204svcbus, lalu jalankan perintah untuk meluncurkan Visual Studio Code.
code .
Buka terminal di Visual Studio Code dengan memilih Terminal > Terminal Baru di bilah menu dan jalankan perintah berikut untuk membuat aplikasi konsol dan tambahkan paket Azure.Messaging.ServiceBus.
dotnet new console dotnet add package Azure.Messaging.ServiceBus
Di Program.cs, tambahkan pernyataan
using
berikut di bagian atas file setelah pernyataanusing
saat ini.using Azure.Messaging.ServiceBus;
Tambahkan variabel berikut ke kode dan atur
connectionString
variabel ke string koneksi yang Anda peroleh sebelumnya.// connection string to your Service Bus namespace string connectionString = "<CONNECTION STRING>"; // name of your Service Bus topic string queueName = "az204-queue";
Tambahkan kode berikut di bawah variabel yang baru saja Anda tambahkan. Lihat komentar kode untuk mengetahui rinciannya.
// the client that owns the connection and can be used to create senders and receivers ServiceBusClient client; // the sender used to publish messages to the queue ServiceBusSender sender; // Create the clients that we'll use for sending and processing messages. client = new ServiceBusClient(connectionString); sender = client.CreateSender(queueName); // create a batch using ServiceBusMessageBatch messageBatch = await sender.CreateMessageBatchAsync(); for (int i = 1; i <= 3; i++) { // try adding a message to the batch if (!messageBatch.TryAddMessage(new ServiceBusMessage($"Message {i}"))) { // if an exception occurs throw new Exception($"Exception {i} has occurred."); } } try { // Use the producer client to send the batch of messages to the Service Bus queue await sender.SendMessagesAsync(messageBatch); Console.WriteLine($"A batch of three messages has been published to the queue."); } finally { // Calling DisposeAsync on client types is required to ensure that network // resources and other unmanaged objects are properly cleaned up. await sender.DisposeAsync(); await client.DisposeAsync(); } Console.WriteLine("Follow the directions in the exercise to review the results in the Azure portal."); Console.WriteLine("Press any key to continue"); Console.ReadKey();
Simpan file dan jalankan perintah
dotnet build
untuk memastikan tidak ada kesalahan.Jalankan program menggunakan
dotnet run
perintah dan tunggu pesan konfirmasi berikut. Kemudian tekan tombol apa pun untuk keluar dari program.A batch of three messages has been published to the queue.
Meninjau hasil
Masuk ke portal Azure dan navigasi ke namespace Bus Layanan Anda. Pilih Bus Layanan Explorer di panel navigasi antrean Bus Layanan.
Pilih Intip dari awal dan tiga pesan yang dikirim muncul.
Memperbarui proyek untuk menerima pesan ke antrean
Di bagian ini, Anda memperbarui program untuk menerima pesan dari antrean.
Tambahkan kode berikut di akhir kode yang ada. Lihat komentar kode untuk mengetahui rinciannya.
ServiceBusProcessor processor; client = new ServiceBusClient(connectionString); // create a processor that we can use to process the messages processor = client.CreateProcessor(queueName, new ServiceBusProcessorOptions()); try { // add handler to process messages processor.ProcessMessageAsync += MessageHandler; // add handler to process any errors processor.ProcessErrorAsync += ErrorHandler; // start processing await processor.StartProcessingAsync(); Console.WriteLine("Wait for a minute and then press any key to end the processing"); Console.ReadKey(); // stop processing Console.WriteLine("\nStopping the receiver..."); await processor.StopProcessingAsync(); Console.WriteLine("Stopped receiving messages"); } finally { // Calling DisposeAsync on client types is required to ensure that network // resources and other unmanaged objects are properly cleaned up. await processor.DisposeAsync(); await client.DisposeAsync(); } // handle received messages async Task MessageHandler(ProcessMessageEventArgs args) { string body = args.Message.Body.ToString(); Console.WriteLine($"Received: {body}"); // complete the message. messages is deleted from the queue. await args.CompleteMessageAsync(args.Message); } // handle any errors when receiving messages Task ErrorHandler(ProcessErrorEventArgs args) { Console.WriteLine(args.Exception.ToString()); return Task.CompletedTask; }
Gunakan perintah
dotnet build
untuk memastikan tidak ada kesalahan.dotnet run
Gunakan perintah untuk menjalankan aplikasi. Ini mengirim tiga pesan lagi ke antrean dan kemudian mengambil keenam pesan. Tekan tombol apa pun untuk menghentikan penerima dan aplikasi.Wait for a minute and then press any key to end the processing Received: Message 1 Received: Message 2 Received: Message 3 Received: Message 1 Received: Message 2 Received: Message 3 Stopping the receiver... Stopped receiving messages
Catatan
Karena aplikasi mengirim dua batch pesan sebelum mengambilnya, Anda akan melihat dua batch dari tiga pesan yang diwakili dalam output.
Kembali ke portal dan pilih Intip dari mulai lagi. Perhatikan bahwa tidak ada pesan yang muncul dalam antrean karena kami telah mengambil semuanya.
Membersihkan sumber daya
Jika sumber daya tidak diperlukan lagi, Anda dapat menggunakan perintah az group delete
di Azure Cloud Shell untuk menghapus grup sumber daya.
az group delete --name az204-svcbus-rg --no-wait