Erste Schritte mit dem AWS Message Processing Framework für.NET - AWS SDK for .NET

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erste Schritte mit dem AWS Message Processing Framework für.NET

Dies ist eine Vorabveröffentlichungsdokumentation für eine Funktion in der Vorabversion. Änderungen sind vorbehalten.

Bevor Sie beginnen, stellen Sie sicher, dass Sie Ihre Umgebung und Ihr Projekt eingerichtet haben. Lesen Sie auch die Informationen unterSDK-Funktionen.

Dieses Thema enthält Informationen, die Ihnen den Einstieg in die Verwendung des Message Processing Framework erleichtern. Zusätzlich zu den Voraussetzungen und zur Konfiguration wird ein Tutorial bereitgestellt, das Ihnen zeigt, wie Sie ein gängiges Szenario implementieren.

Voraussetzungen und Konfiguration

  • Die Anmeldeinformationen, die Sie für Ihre Anwendung angeben, müssen über die entsprechenden Berechtigungen für den Messaging-Dienst und die von ihr verwendeten Vorgänge verfügen. Weitere Informationen finden Sie in den Sicherheitsthemen für SQS und SNS sowie EventBridgein den entsprechenden Entwicklerhandbüchern.

  • Um das AWS Message Processing Framework für.NET verwenden zu können, müssen Sie das AWS.Messaging NuGetPaket zu Ihrem Projekt hinzufügen. Beispielsweise:

    dotnet add package AWS.Messaging
  • Das Framework lässt sich in den Dienstcontainer Dependency Injection (DI) von .NET integrieren. Sie können das Framework beim Start Ihrer Anwendung konfigurieren, indem Sie es aufrufenAddAWSMessageBus, um es dem DI-Container hinzuzufügen.

    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

Dieses Tutorial zeigt, wie Sie das AWS Message Processing Framework für.NET verwenden. Es erstellt zwei Anwendungen: eine ASP.NET Core Minimal API, die Nachrichten an eine Amazon SQS SQS-Warteschlange sendet, wenn sie eine Anfrage an einem API-Endpunkt empfängt, und eine Konsolenanwendung mit langer Laufzeit, die nach diesen Nachrichten fragt und sie verarbeitet.

  • Die Anweisungen in diesem Tutorial bevorzugen die .NET-CLI, aber Sie können dieses Tutorial entweder mit plattformübergreifenden Tools wie dem.NET-CLI oder Microsoft Visual Studio ausführen. Informationen zu Tools finden Sie unterInstallieren und konfigurieren Sie Ihre Toolchain.

  • In dieser Anleitung wird davon ausgegangen, dass Sie Ihr [default] Profil für Anmeldeinformationen verwenden. Es wird auch davon ausgegangen, dass kurzfristige Anmeldeinformationen mit entsprechenden Berechtigungen für das Senden und Empfangen von Amazon SQS SQS-Nachrichten verfügbar sind. Weitere Informationen finden Sie unter Konfigurieren Sie die SDK-Authentifizierung mit AWS und in den Sicherheitsthemen für SQS.

Anmerkung

Wenn Sie dieses Tutorial ausführen, können Ihnen Kosten für SQS-Messaging entstehen.

Schritte

Erstellen Sie eine SQS-Warteschlange

Für dieses Tutorial ist eine SQS-Warteschlange erforderlich, an die Nachrichten gesendet und von der Nachrichten empfangen werden können. Eine Warteschlange kann erstellt werden, indem Sie einen der folgenden Befehle für AWS CLI oder für verwenden. AWS Tools for PowerShell Notieren Sie sich die zurückgegebene Warteschlangen-URL, damit Sie sie in der folgenden Framework-Konfiguration angeben können.

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

Erstellen Sie die Veröffentlichungsanwendung und führen Sie sie aus

Gehen Sie wie folgt vor, um die Veröffentlichungsanwendung zu erstellen und auszuführen.

  1. Öffnen Sie eine Befehlszeile oder ein Terminal. Suchen oder erstellen Sie einen Betriebssystemordner, unter dem Sie ein .NET-Projekt erstellen können.

  2. Führen Sie in diesem Ordner den folgenden Befehl aus, um das .NET-Projekt zu erstellen.

    dotnet new webapi --name Publisher
  3. Navigieren Sie in den Ordner des neuen Projekts. Fügen Sie eine Abhängigkeit vom AWS Message Processing Framework for .NET hinzu.

    cd Publisher dotnet add package AWS.Messaging
    Anmerkung

    Wenn Sie AWS IAM Identity Center für die Authentifizierung verwenden, achten Sie darauf, auch AWSSDK.SSO und hinzuzufügenAWSSDK.SSOOIDC.

  4. Ersetzen Sie den Code in Program.cs durch den folgenden Code.

    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. Führen Sie den folgenden Befehl aus. Dadurch sollte ein Browserfenster mit der Swagger-Benutzeroberfläche geöffnet werden, mit der Sie Ihre API erkunden und testen können.

    dotnet watch run <queue URL created earlier>
  6. Öffnen Sie den /greeting Endpunkt und wählen Sie Try it out.

  7. Geben Sie senderName greeting Werte für die Nachricht an und wählen Sie Ausführen. Dadurch wird Ihre API aufgerufen, die die SQS-Nachricht sendet.

Erstellen Sie die Handling-Anwendung und führen Sie sie aus

Gehen Sie wie folgt vor, um die Bearbeitungsanwendung zu erstellen und auszuführen.

  1. Öffnen Sie eine Befehlszeile oder ein Terminal. Suchen oder erstellen Sie einen Betriebssystemordner, unter dem Sie ein .NET-Projekt erstellen können.

  2. Führen Sie in diesem Ordner den folgenden Befehl aus, um das .NET-Projekt zu erstellen.

    dotnet new console --name Handler
  3. Navigieren Sie in den Ordner des neuen Projekts. Fügen Sie eine Abhängigkeit vom AWS Message Processing Framework for .NET hinzu. Fügen Sie außerdem das Microsoft.Extensions.Hosting Paket hinzu, mit dem Sie das Framework über den.NET Generic Host konfigurieren können.

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

    Wenn Sie AWS IAM Identity Center für die Authentifizierung verwenden, stellen Sie sicher, dass Sie auch AWSSDK.SSO und hinzufügenAWSSDK.SSOOIDC.

  4. Ersetzen Sie den Code in Program.cs durch den folgenden Code.

    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. Führen Sie den folgenden Befehl aus. Dadurch wird ein Poller mit langer Laufzeit gestartet.

    dotnet run <queue URL created earlier>

    Kurz nach dem Start empfängt die Anwendung die Nachricht, die im ersten Teil dieses Tutorials gesendet wurde, und protokolliert die folgende Meldung:

    Received message {greeting} from {senderName}
  6. Drücken SieCtrl+C, um den Poller zu stoppen.

Bereinigen

Verwenden Sie einen der folgenden Befehle für AWS CLI oder, AWS Tools for PowerShell um die Warteschlange zu löschen.

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