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

Note

Ceci est une documentation préliminaire pour une fonctionnalité en version de prévisualisation. 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 SQS et SNS, ainsi que 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 au conteneur de services d'injection de dépendances (DI) de .NET. 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. Elle crée deux applications : une API ASP.NET Core Minimal qui envoie des messages à une file d'attente Amazon SQS lorsqu'elle reçoit une demande sur un point de terminaison d'API, et une application de console de longue durée qui interroge ces messages et les gère.

  • Les instructions de ce didacticiel privilégient l'interface de ligne de commande .NET, mais vous pouvez exécuter ce didacticiel à l'aide d'outils multiplateformes tels que .NET CLI ou Microsoft Visual Studio. Pour plus d'informations sur les outils, consultezInstallez 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 des messages Amazon SQS. Pour plus d'informations, consultez Configurez SDK l'authentification avec AWS les rubriques relatives à la sécurité relatives à SQS.

Note

L'exécution de ce didacticiel peut entraîner des coûts liés à la messagerie SQS.

Étapes

Création d'une file d'attente SQS

Ce didacticiel nécessite une file d'attente SQS 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 l'URL de la file 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 de système d'exploitation sous lequel vous pouvez créer un projet .NET.

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

    dotnet new webapi --name Publisher
  3. Accédez au dossier du nouveau projet. Ajoutez une dépendance à l'infrastructure 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 appelle votre API, qui envoie le message SQS.

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 de système d'exploitation sous lequel vous pouvez créer un projet .NET.

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

    dotnet new console --name Handler
  3. Accédez au dossier du nouveau projet. Ajoutez une dépendance à l'infrastructure de traitement des AWS messages pour .NET. Ajoutez également le Microsoft.Extensions.Hosting package, qui vous permet de configurer le framework via le .NET Generic Host.

    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 de temps 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>"