Commencez avec le cadre de traitement des AWS messages pour. NET - AWS SDK for .NET

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commencez avec le cadre de traitement des AWS messages pour. NET

Il s'agit de la documentation d'avant-première d'une fonctionnalité en version préliminaire. Elle est susceptible d’être modifiée.

Avant de commencer, assurez-vous d'avoir configuré votre environnement et votre projet. Consultez également les informations contenues dansSDKfonctionnalités.

Cette rubrique fournit des informations qui vous aideront à commencer à utiliser le cadre de traitement des messages. Outre les informations relatives aux prérequis et à la configuration, un didacticiel est fourni pour vous montrer comment implémenter un scénario courant.

Prérequis et configuration

  • Les informations d'identification que vous fournissez pour votre application doivent disposer des autorisations appropriées pour le service de messagerie et les opérations qu'il utilise. Pour plus d'informations, consultez les rubriques relatives à la sécurité pour SQSSNS, et EventBridgedans leurs guides de développement respectifs.

  • Pour utiliser le cadre de traitement des AWS messages pour. NET, vous devez ajouter le AWS.Messaging NuGetpackage à votre projet. Par exemple :

    dotnet add package AWS.Messaging
  • Le framework s'intègre à. NETdu conteneur de services d'injection de dépendances (DI). Vous pouvez configurer le framework lors du démarrage de votre application en appelant AddAWSMessageBus pour l'ajouter au conteneur 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"); });

Didacticiel

Ce didacticiel explique comment utiliser le cadre de traitement des AWS messages pour. NET. Il crée deux applications : uneASP. NETCore Minimal API qui envoie des messages à une SQS file d'attente Amazon lorsqu'elle reçoit une demande sur un API point de terminaison, et une application console de longue durée qui interroge ces messages et les gère.

  • Les instructions de ce didacticiel privilégient le. NETCLI, mais vous pouvez exécuter ce didacticiel en utilisant l'un ou l'autre des outils multiplateformes tels que. NETCLIou Microsoft Visual Studio. Pour plus d'informations sur les outils, voirInstallez et configurez votre chaîne d'outils.

  • Ce didacticiel part du principe que vous utilisez votre [default] profil comme identifiant. Cela suppose également que des informations d'identification à court terme sont disponibles avec les autorisations appropriées pour envoyer et recevoir SQS des messages Amazon. Pour plus d'informations, consultez Configurez l'authentification du SDK avec AWS et les rubriques relatives à la sécurité pour SQS.

Note

L'exécution de ce didacticiel peut entraîner des frais de SQS messagerie.

Étapes

Créer une file d'attente SQS

Ce didacticiel nécessite une SQS file d'attente pour envoyer et recevoir des messages. Une file d'attente peut être créée à l'aide de l'une des commandes suivantes pour le AWS CLI ou le AWS Tools for PowerShell. Prenez note de la file URL d'attente renvoyée afin de pouvoir la spécifier dans la configuration du framework qui suit.

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

Création et exécution de l'application de publication

Suivez la procédure ci-dessous pour créer et exécuter l'application de publication.

  1. Ouvrez une invite de commande ou un terminal. Recherchez ou créez un dossier du système d'exploitation dans lequel vous pouvez créer un. NETprojet.

  2. Dans ce dossier, exécutez la commande suivante pour créer le. NETprojet.

    dotnet new webapi --name Publisher
  3. Accédez au dossier du nouveau projet. Ajoutez une dépendance au cadre de traitement des AWS messages pour. NET.

    cd Publisher dotnet add package AWS.Messaging
    Note

    Si vous l'utilisez AWS IAM Identity Center pour l'authentification, veillez également à ajouter AWSSDK.SSO etAWSSDK.SSOOIDC.

  4. Remplacez le code Program.cs par le code suivant.

    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. Exécutez la commande suivante. Cela devrait ouvrir une fenêtre de navigateur avec l'interface utilisateur Swagger, qui vous permettra d'explorer et de tester votre. API

    dotnet watch run <queue URL created earlier>
  6. Ouvrez le /greeting point de terminaison et choisissez Try it out.

  7. Spécifiez greeting les valeurs senderName et les valeurs du message, puis choisissez Execute. Cela invoque votreAPI, qui envoie le SQS message.

Création et exécution de l'application de gestion

Utilisez la procédure suivante pour créer et exécuter l'application de gestion.

  1. Ouvrez une invite de commande ou un terminal. Recherchez ou créez un dossier du système d'exploitation dans lequel vous pouvez créer un. NETprojet.

  2. Dans ce dossier, exécutez la commande suivante pour créer le. NETprojet.

    dotnet new console --name Handler
  3. Accédez au dossier du nouveau projet. Ajoutez une dépendance au cadre de traitement des AWS messages pour. NET. Ajoutez également le Microsoft.Extensions.Hosting package, qui vous permet de configurer le framework via le. NETHôte générique.

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

    Si vous l'utilisez AWS IAM Identity Center pour l'authentification, veillez également à ajouter AWSSDK.SSO etAWSSDK.SSOOIDC.

  4. Remplacez le code Program.cs par le code suivant.

    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. Exécutez la commande suivante. Cela lance un sondage de longue haleine.

    dotnet run <queue URL created earlier>

    Peu après le démarrage, l'application recevra le message envoyé dans la première partie de ce didacticiel et enregistrera le message suivant :

    Received message {greeting} from {senderName}
  6. Appuyez Ctrl+C pour arrêter le sondeur.

Nettoyage

Utilisez l'une des commandes suivantes pour AWS CLI ou pour AWS Tools for PowerShell supprimer la file d'attente.

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