Comece a usar a estrutura de processamento de AWS mensagens para.NET - AWS SDK for .NET

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Comece a usar a estrutura de processamento de AWS mensagens para.NET

Esta é uma documentação de pré-lançamento de um recurso em versão de pré-visualização. Está sujeita a alteração.

Antes de começar, assegure-se de ter configurado o seu ambiente e seu projeto. Revise também as informações em Atributos do SDK.

Este tópico fornece informações que ajudarão você a começar a usar o Message Processing Framework. Além das informações de pré-requisitos e configuração, é fornecido um tutorial que mostra como implementar um cenário comum.

Pré-requisitos e configuração

  • As credenciais que você fornece para seu aplicativo devem ter permissões apropriadas para o serviço de mensagens e as operações que ele usa. Para obter mais informações, consulte os tópicos de segurança para SQS, SNS e EventBridgeem seus respectivos guias do desenvolvedor.

  • Para usar o AWS Message Processing Framework para.NET, você deve adicionar o AWS.Messaging NuGetpacote ao seu projeto. Por exemplo: .

    dotnet add package AWS.Messaging
  • A estrutura se integra ao contêiner de serviço de injeção de dependência (DI) do.NET. Você pode configurar a estrutura durante a inicialização do seu aplicativo ligando AddAWSMessageBus para adicioná-la ao contêiner de 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

Este tutorial demonstra como usar o AWS Message Processing Framework para.NET. Ele cria dois aplicativos: uma API ASP.NET Core Minimal que envia mensagens para uma fila do Amazon SQS quando recebe uma solicitação em um endpoint da API e um aplicativo de console de longa execução que pesquisa essas mensagens e as processa.

  • As instruções neste tutorial favorecem a CLI do.NET, mas você pode realizar esse tutorial usando ferramentas multiplataforma, como a CLI do.NET ou o Microsoft Visual Studio. Para obter informações sobre ferramentas, consulteInstale e configure seu conjunto de ferramentas.

  • Este tutorial pressupõe que você esteja usando seu [default] perfil para obter credenciais. Também pressupõe que credenciais de curto prazo estejam disponíveis com as permissões apropriadas para enviar e receber mensagens do Amazon SQS. Para obter mais informações, consulte Configure a autenticação do SDK com AWS os tópicos de segurança do SQS.

nota

Ao executar este tutorial, você pode incorrer em custos com mensagens SQS.

Etapas

Criar uma fila SQS

Este tutorial requer uma fila SQS para enviar e receber mensagens. Uma fila pode ser criada usando um dos seguintes comandos para o AWS CLI ou o. AWS Tools for PowerShell Anote a URL da fila que é retornada para que você possa especificá-la na configuração da estrutura a seguir.

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

Crie e execute o aplicativo de publicação

Use o procedimento a seguir para criar e executar o aplicativo de publicação.

  1. Abra um prompt de comando ou terminal. Localize ou crie uma pasta do sistema operacional na qual você pode criar um projeto .NET.

  2. Nessa pasta, execute o comando a seguir para criar o projeto .NET.

    dotnet new webapi --name Publisher
  3. Navegue até a pasta do novo projeto. Adicione uma dependência na estrutura de processamento de AWS mensagens para.NET.

    cd Publisher dotnet add package AWS.Messaging
    nota

    Se você estiver usando AWS IAM Identity Center para autenticação, não se esqueça de também adicionar AWSSDK.SSO AWSSDK.SSOOIDC e.

  4. Substitua o código em Program.cs pelo código a seguir.

    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. Execute o seguinte comando . Isso deve abrir uma janela do navegador com a interface do usuário do Swagger, que permite explorar e testar sua API.

    dotnet watch run <queue URL created earlier>
  6. Abra o /greeting endpoint e escolha Testar.

  7. Especifique senderName os greeting valores da mensagem e escolha Executar. Isso invoca sua API, que envia a mensagem SQS.

Crie e execute o aplicativo de manipulação

Use o procedimento a seguir para criar e executar o aplicativo de manipulação.

  1. Abra um prompt de comando ou terminal. Localize ou crie uma pasta do sistema operacional na qual você pode criar um projeto .NET.

  2. Nessa pasta, execute o comando a seguir para criar o projeto .NET.

    dotnet new console --name Handler
  3. Navegue até a pasta do novo projeto. Adicione uma dependência na estrutura de processamento de AWS mensagens para.NET. Adicione também o Microsoft.Extensions.Hosting pacote, que permite configurar a estrutura por meio do host genérico do.NET.

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

    Se você estiver usando AWS IAM Identity Center para autenticação, não se esqueça de também adicionar AWSSDK.SSO AWSSDK.SSOOIDC e.

  4. Substitua o código em Program.cs pelo código a seguir.

    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. Execute o seguinte comando . Isso inicia uma pesquisa de longa duração.

    dotnet run <queue URL created earlier>

    Logo após a inicialização, o aplicativo receberá a mensagem enviada na primeira parte deste tutorial e registrará a seguinte mensagem:

    Received message {greeting} from {senderName}
  6. Pressione Ctrl+C para parar o poller.

Limpeza

Use um dos seguintes comandos para o AWS CLI ou AWS Tools for PowerShell para excluir a fila.

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