Mulai dengan AWS Message Processing Framework untuk. NET - AWS SDK for .NET

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mulai dengan AWS Message Processing Framework untuk. NET

Ini adalah dokumentasi prarilis untuk fitur dalam rilis pratinjau. Dokumentasi dapat berubah.

Sebelum Anda mulai, pastikan Anda telah mengatur lingkungan dan proyek Anda. Juga tinjau informasi diSDKfitur.

Topik ini memberikan informasi yang akan membantu Anda mulai menggunakan Kerangka Pemrosesan Pesan. Selain informasi prasyarat dan konfigurasi, tutorial disediakan yang menunjukkan kepada Anda bagaimana menerapkan skenario umum.

Prasyarat dan konfigurasi

  • Kredensi yang Anda berikan untuk aplikasi Anda harus memiliki izin yang sesuai untuk layanan pesan dan operasi yang digunakannya. Untuk informasi selengkapnya, lihat topik keamanan untuk SQSSNS,, dan EventBridgedi panduan pengembang masing-masing.

  • Untuk menggunakan Kerangka Pemrosesan AWS Pesan untuk. NET, Anda harus menambahkan AWS.Messaging NuGetpaket ke proyek Anda. Sebagai contoh:

    dotnet add package AWS.Messaging
  • Kerangka kerja terintegrasi dengan. NETwadah layanan injeksi ketergantungan (DI). Anda dapat mengonfigurasi kerangka kerja selama startup aplikasi Anda dengan menelepon AddAWSMessageBus untuk menambahkannya ke wadah DI.

    var builder = WebApplication.CreateBuilder(args); // Register the AWS Message Processing Framework for .NET builder.Services.AddAWSMessageBus(builder => { // Register that you'll publish messages of type ChatMessage to an existing queue builder.AddSQSPublisher<ChatMessage>("https://sqs.us-west-2.amazonaws.com/012345678910/MyAppProd"); });

Tutorial

Tutorial ini menunjukkan bagaimana menggunakan AWS Message Processing Framework untuk. NET. Ini menciptakan dua aplikasi: sebuahASP. NETCore Minimal API yang mengirim pesan ke SQS antrian Amazon saat menerima permintaan di API titik akhir, dan aplikasi konsol yang berjalan lama yang melakukan polling untuk pesan-pesan ini dan menanganinya.

  • Instruksi dalam tutorial ini mendukung. NETCLI, tetapi Anda dapat melakukan tutorial ini dengan menggunakan salah satu alat lintas platform seperti. NETCLIatau Microsoft Visual Studio. Untuk informasi tentang alat, lihatInstal dan konfigurasikan toolchain Anda.

  • Tutorial ini mengasumsikan bahwa Anda menggunakan [default] profil Anda untuk kredensil. Ini juga mengasumsikan bahwa kredensil jangka pendek tersedia dengan izin yang sesuai untuk mengirim dan menerima pesan Amazon. SQS Untuk informasi selengkapnya, lihat Konfigurasikan otentikasi SDK dengan AWS dan topik keamanan untuk SQS.

catatan

Dengan menjalankan tutorial ini, Anda mungkin dikenakan biaya untuk SQS pengiriman pesan.

Langkah-langkah

Buat SQS antrian

Tutorial ini membutuhkan SQS antrian untuk mengirim pesan ke dan menerima pesan dari. Antrian dapat dibuat dengan menggunakan salah satu perintah berikut untuk AWS CLI atau. AWS Tools for PowerShell Perhatikan antrian URL yang dikembalikan sehingga Anda dapat menentukannya dalam konfigurasi kerangka kerja berikut.

AWS CLI
aws sqs create-queue --queue-name DemoQueue
AWS Tools for PowerShell
New-SQSQueue -QueueName DemoQueue

Membuat dan menjalankan aplikasi penerbitan

Gunakan prosedur berikut untuk membuat dan menjalankan aplikasi penerbitan.

  1. Buka command prompt atau terminal. Temukan atau buat folder sistem operasi tempat Anda dapat membuat file. NETproyek.

  2. Dalam folder itu, jalankan perintah berikut untuk membuat file. NETproyek.

    dotnet new webapi --name Publisher
  3. Arahkan ke folder proyek baru. Tambahkan ketergantungan pada Kerangka Pemrosesan AWS Pesan untuk. NET.

    cd Publisher dotnet add package AWS.Messaging
    catatan

    Jika Anda menggunakan AWS IAM Identity Center untuk otentikasi, pastikan untuk juga menambahkan AWSSDK.SSO danAWSSDK.SSOOIDC.

  4. Ganti kode Program.cs dengan kode berikut.

    using AWS.Messaging; using Microsoft.AspNetCore.Mvc; using Publisher; var builder = WebApplication.CreateBuilder(args); // Add services to the container. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle. builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); // Configure the AWS Message Processing Framework for .NET. builder.Services.AddAWSMessageBus(builder => { // Check for input SQS URL. // The SQS URL should be passed as a command line argument or set in the Debug launch profile. if ((args.Length == 1) && (args[0].Contains("https://sqs."))) { // Register that you'll publish messages of type GreetingMessage: // 1. To a specified queue. // 2. Using the message identifier "greetingMessage", which will be used // by handlers to route the message to the appropriate handler. builder.AddSQSPublisher<GreetingMessage>(args[0], "greetingMessage"); } // You can map additional message types to queues or topics here as well. }); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); // Create an API Endpoint that receives GreetingMessage objects // from the caller and then sends them as an SQS message. app.MapPost("/greeting", async ([FromServices] IMessagePublisher publisher, Publisher.GreetingMessage message) => { return await PostGreeting(message, publisher); }) .WithName("SendGreeting") .WithOpenApi(); app.Run(); public partial class Program { /// <summary> /// Endpoint for posting a greeting message. /// </summary> /// <param name="greetingMessage">The greeting message.</param> /// <param name="messagePublisher">The message publisher.</param> /// <returns>Async task result.</returns> public static async Task<IResult> PostGreeting(GreetingMessage greetingMessage, IMessagePublisher messagePublisher) { if (greetingMessage.SenderName == null || greetingMessage.Greeting == null) { return Results.BadRequest(); } // Publish the message to the queue configured above. await messagePublisher.PublishAsync(greetingMessage); return Results.Ok(); } } namespace Publisher { /// <summary> /// This class represents the message contents. /// </summary> public class GreetingMessage { public string? SenderName { get; set; } public string? Greeting { get; set; } } }
  5. Jalankan perintah berikut. Ini akan membuka jendela browser dengan UI Swagger, yang memungkinkan Anda menjelajahi dan menguji. API

    dotnet watch run <queue URL created earlier>
  6. Buka /greeting endpoint dan pilih Try it out.

  7. Tentukan senderName dan greeting nilai untuk pesan, dan pilih Jalankan. Ini memanggil AndaAPI, yang mengirim SQS pesan.

Buat dan jalankan aplikasi penanganan

Gunakan prosedur berikut untuk membuat dan menjalankan aplikasi penanganan.

  1. Buka command prompt atau terminal. Temukan atau buat folder sistem operasi tempat Anda dapat membuat file. NETproyek.

  2. Dalam folder itu, jalankan perintah berikut untuk membuat file. NETproyek.

    dotnet new console --name Handler
  3. Arahkan ke folder proyek baru. Tambahkan ketergantungan pada Kerangka Pemrosesan AWS Pesan untuk. NET. Juga tambahkan Microsoft.Extensions.Hosting paket, yang memungkinkan Anda untuk mengkonfigurasi kerangka kerja melalui. NETHost Generik.

    cd Handler dotnet add package AWS.Messaging dotnet add package Microsoft.Extensions.Hosting
    catatan

    Jika Anda menggunakan AWS IAM Identity Center untuk otentikasi, pastikan untuk juga menambahkan AWSSDK.SSO danAWSSDK.SSOOIDC.

  4. Ganti kode Program.cs dengan kode berikut.

    using AWS.Messaging; using Handler; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var builder = Host.CreateDefaultBuilder(args); builder.ConfigureServices(services => { // Register the AWS Message Processing Framework for .NET. services.AddAWSMessageBus(builder => { // Check for input SQS URL. // The SQS URL should be passed as a command line argument or set in the Debug launch profile. if ((args.Length == 1) && (args[0].Contains("https://sqs."))) { // Register you'll poll the following queue. builder.AddSQSPoller(args[0]); // And that messages of type "greetingMessage" should be: // 1. Deserialized as GreetingMessage objects. // 2. Which are then passed to GreetingMessageHandler. builder.AddMessageHandler<GreetingMessageHandler, GreetingMessage>("greetingMessage"); } // You can add additional message handlers here, using different message types. }); }); var host = builder.Build(); await host.RunAsync(); namespace Handler { /// <summary> /// This class represents the message contents. /// </summary> public class GreetingMessage { public string? SenderName { get; set; } public string? Greeting { get; set; } } /// <summary> /// This handler is invoked each time you receive the message. /// </summary> public class GreetingMessageHandler : IMessageHandler<GreetingMessage> { public Task<MessageProcessStatus> HandleAsync( MessageEnvelope<GreetingMessage> messageEnvelope, CancellationToken token = default) { Console.WriteLine( $"Received message {messageEnvelope.Message.Greeting} from {messageEnvelope.Message.SenderName}"); return Task.FromResult(MessageProcessStatus.Success()); } } }
  5. Jalankan perintah berikut. Ini memulai poller yang berjalan lama.

    dotnet run <queue URL created earlier>

    Tak lama setelah startup aplikasi akan menerima pesan yang dikirim di bagian pertama tutorial ini dan log pesan berikut:

    Received message {greeting} from {senderName}
  6. Tekan Ctrl+C untuk menghentikan poller.

Pembersihan

Gunakan salah satu perintah berikut untuk AWS CLI atau AWS Tools for PowerShell untuk menghapus antrian.

AWS CLI
aws sqs delete-queue --queue-url "<queue URL created earlier>"
AWS Tools for PowerShell
Remove-SQSQueue -QueueUrl "<queue URL created earlier>"