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.
Membuat dan menjalankan aplikasi penerbitan
Gunakan prosedur berikut untuk membuat dan menjalankan aplikasi penerbitan.
-
Buka command prompt atau terminal. Temukan atau buat folder sistem operasi tempat Anda dapat membuat file. NETproyek.
-
Dalam folder itu, jalankan perintah berikut untuk membuat file. NETproyek.
dotnet new webapi --name Publisher
-
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
. -
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; } } }
-
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>
-
Buka
/greeting
endpoint dan pilih Try it out. -
Tentukan
senderName
dangreeting
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.
-
Buka command prompt atau terminal. Temukan atau buat folder sistem operasi tempat Anda dapat membuat file. NETproyek.
-
Dalam folder itu, jalankan perintah berikut untuk membuat file. NETproyek.
dotnet new console --name Handler
-
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
. -
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()); } } }
-
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}
-
Tekan
Ctrl+C
untuk menghentikan poller.
Pembersihan
Gunakan salah satu perintah berikut untuk AWS CLI atau AWS Tools for PowerShell untuk menghapus antrian.