Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Consuma mensagens com o AWS Message Processing Framework para.NET - SDK para .NET (versão 3)

A versão 4 (V4) do SDK para .NET está em pré-visualização! Para ver informações sobre essa nova versão na versão prévia, consulte o Guia do desenvolvedor AWS SDK para .NET (versão 4).

Observe que a V4 do SDK está em versão prévia, portanto, seu conteúdo está sujeito a alterações.

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á.

A versão 4 (V4) do SDK para .NET está em pré-visualização! Para ver informações sobre essa nova versão na versão prévia, consulte o Guia do desenvolvedor AWS SDK para .NET (versão 4).

Observe que a V4 do SDK está em versão prévia, portanto, seu conteúdo está sujeito a alterações.

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á.

Consuma mensagens com o AWS Message Processing Framework para.NET

nota

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

A Estrutura de Processamento de AWS Mensagens para.NET permite que você consuma mensagens que foram publicadas usando a estrutura ou um dos serviços de mensagens. As mensagens podem ser consumidas de várias maneiras, algumas das quais estão descritas abaixo.

Manipuladores de mensagens

Para consumir mensagens, implemente um manipulador de mensagens usando a IMessageHandler interface para cada tipo de mensagem que você deseja processar. O mapeamento entre tipos de mensagens e manipuladores de mensagens é configurado na inicialização do projeto.

await Host.CreateDefaultBuilder(args) .ConfigureServices(services => { // Register the AWS Message Processing Framework for .NET services.AddAWSMessageBus(builder => { // Register an SQS Queue that the framework will poll for messages. // NOTE: The URL given below is an example. Use the appropriate URL for your SQS Queue. builder.AddSQSPoller("https://sqs.us-west-2.amazonaws.com/012345678910/MyAppProd"); // Register all IMessageHandler implementations with the message type they should process. // Here messages that match our ChatMessage .NET type will be handled by our ChatMessageHandler builder.AddMessageHandler<ChatMessageHandler, ChatMessage>(); }); }) .Build() .RunAsync();

O código a seguir mostra um exemplo de manipulador de mensagens para uma ChatMessage mensagem.

public class ChatMessageHandler : IMessageHandler<ChatMessage> { public Task<MessageProcessStatus> HandleAsync(MessageEnvelope<ChatMessage> messageEnvelope, CancellationToken token = default) { // Add business and validation logic here. if (messageEnvelope == null) { return Task.FromResult(MessageProcessStatus.Failed()); } if (messageEnvelope.Message == null) { return Task.FromResult(MessageProcessStatus.Failed()); } ChatMessage message = messageEnvelope.Message; Console.WriteLine($"Message Description: {message.MessageDescription}"); // Return success so the framework will delete the message from the queue. return Task.FromResult(MessageProcessStatus.Success()); } }

O externo MessageEnvelope contém metadados usados pela estrutura. Sua message propriedade é o tipo de mensagem (nesse casoChatMessage).

Você pode retornar MessageProcessStatus.Success() para indicar que a mensagem foi processada com sucesso e que a estrutura excluirá a mensagem da fila do Amazon SQS. Ao retornarMessageProcessStatus.Failed(), a mensagem permanecerá na fila, onde poderá ser processada novamente ou movida para uma fila de mensagens mortas, se configurada.

Tratamento de mensagens em um processo de longa duração

Você pode chamar AddSQSPoller com uma URL de fila SQS para iniciar uma longa execução BackgroundServiceque pesquisará continuamente a fila e processará mensagens.

await Host.CreateDefaultBuilder(args) .ConfigureServices(services => { // Register the AWS Message Processing Framework for .NET services.AddAWSMessageBus(builder => { // Register an SQS Queue that the framework will poll for messages. // NOTE: The URL given below is an example. Use the appropriate URL for your SQS Queue. builder.AddSQSPoller("https://sqs.us-west-2.amazonaws.com/012345678910/MyAppProd", options => { // The maximum number of messages from this queue that the framework will process concurrently on this client. options.MaxNumberOfConcurrentMessages = 10; // The duration each call to SQS will wait for new messages. options.WaitTimeSeconds = 20; }); // Register all IMessageHandler implementations with the message type they should process. builder.AddMessageHandler<ChatMessageHandler, ChatMessage>(); }); }) .Build() .RunAsync();

Configurando o SQS Message Poller

O poller de mensagens do SQS pode ser configurado pelo SQSMessagePollerOptions durante a chamada. AddSQSPoller

  • MaxNumberOfConcurrentMessages- O número máximo de mensagens da fila a serem processadas simultaneamente. O valor padrão é 10.

  • WaitTimeSeconds- A duração (em segundos) pela qual a chamada do ReceiveMessage SQS espera que uma mensagem chegue na fila antes de retornar. Se uma mensagem estiver disponível, a chamada retornará antes deWaitTimeSeconds. O valor padrão é 20.

Tratamento do tempo limite de visibilidade da mensagem

As mensagens do SQS têm um período de tempo limite de visibilidade. Quando um consumidor começa a lidar com uma determinada mensagem, ela permanece na fila, mas fica oculta dos outros consumidores para evitar processá-la mais de uma vez. Se a mensagem não for tratada e excluída antes de se tornar visível novamente, outro consumidor poderá tentar lidar com a mesma mensagem.

A estrutura rastreará e tentará estender o tempo limite de visibilidade das mensagens que está manipulando atualmente. Você pode configurar esse comportamento no SQSMessagePollerOptions ao ligarAddSQSPoller.

  • VisibilityTimeout- A duração em segundos em que as mensagens recebidas são ocultadas das solicitações de recuperação subsequentes. O valor padrão é 30.

  • VisibilityTimeoutExtensionThreshold- Quando o tempo limite de visibilidade de uma mensagem estiver dentro de alguns segundos após a expiração, a estrutura estenderá o tempo limite de visibilidade (em mais VisibilityTimeout alguns segundos). O valor padrão é 5.

  • VisibilityTimeoutExtensionHeartbeatInterval- Com que frequência, em segundos, a estrutura verificará as mensagens que estão prestes a expirar e, em VisibilityTimeoutExtensionThreshold seguida, estenderá o tempo limite de visibilidade. O valor padrão é 1.

No exemplo a seguir, a estrutura verificará a cada 1 segundo as mensagens que ainda estão sendo tratadas. Para essas mensagens dentro de 5 segundos após se tornarem visíveis novamente, a estrutura estenderá automaticamente o tempo limite de visibilidade de cada mensagem em mais 30 segundos.

// NOTE: The URL given below is an example. Use the appropriate URL for your SQS Queue. builder.AddSQSPoller("https://sqs.us-west-2.amazonaws.com/012345678910/MyAppProd", options => { options.VisibilityTimeout = 30; options.VisibilityTimeoutExtensionThreshold = 5; VisibilityTimeoutExtensionHeartbeatInterval = 1; });

Manipulação de mensagens em AWS Lambda funções

Você pode usar o AWS Message Processing Framework para.NET com a integração do SQS com o Lambda. Isso é fornecido pelo AWS.Messaging.Lambda pacote. Consulte seu README para começar.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.