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

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

O AWS Message Processing Framework para.NET cria, envia e manipula mensagens em três “camadas” diferentes:

  1. Na camada mais externa, a estrutura cria a solicitação ou resposta AWS-nativa específica para um serviço. Com o Amazon SQS, por exemplo, ele cria SendMessagesolicitações e trabalha com os Messageobjetos definidos pelo serviço.

  2. Dentro da solicitação e resposta do SQS, a estrutura define o MessageBody elemento (ou Message para o Amazon SNS Detail ou para a EventBridge Amazon) como um formato JSON. CloudEvent Ele contém metadados definidos pela estrutura que podem ser acessados no MessageEnvelope objeto ao manipular uma mensagem.

  3. Na camada mais interna, o data atributo dentro do objeto CloudEvent JSON contém uma serialização JSON do objeto.NET que foi enviado ou recebido como mensagem.

    { "id":"b02f156b-0f02-48cf-ae54-4fbbe05cffba", "source":"/aws/messaging", "specversion":"1.0", "type":"Publisher.Models.ChatMessage", "time":"2023-11-21T16:36:02.8957126+00:00", "data":"<the ChatMessage object serialized as JSON>" }

Você pode personalizar a forma como o envelope da mensagem é configurado e lido:

  • "id"identifica a mensagem de forma exclusiva. Por padrão, ele é definido como um novo GUID, mas isso pode ser substituído implementando o seu próprio IMessageIdGenerator e injetando-o no contêiner de DI.

  • "type"controla como a mensagem é roteada para os manipuladores. Por padrão, isso usa o nome completo do tipo.NET que corresponde à mensagem. Você pode substituir isso por meio do messageTypeIdentifier parâmetro ao mapear o tipo de mensagem para o destino via AddSQSPublisherAddSNSPublisher, ouAddEventBridgePublisher.

  • "source"indica qual sistema ou servidor enviou a mensagem.

    • Esse será o nome da função se estiver publicando AWS Lambda, o nome do cluster e o ARN da tarefa se estiver no Amazon ECS, o ID da instância se estiver no Amazon EC2, caso contrário, um valor alternativo de. /aws/messaging

    • Você pode substituir isso por meio de AddMessageSource ou AddMessageSourceSuffix noMessageBusBuilder.

  • "time"definido para o atual DateTime em UTC. Isso pode ser substituído implementando o seu próprio IDateTimeHandler e injetando-o no contêiner DI.

  • "data"contém uma representação JSON do objeto.NET que foi enviado ou recebido como mensagem:

    • ConfigureSerializationOptionson MessageBusBuilder permite que você configure o System.Text.Json.JsonSerializerOptionsque será usado ao serializar e desserializar a mensagem.

    • Para injetar atributos adicionais ou transformar o envelope da mensagem depois que a estrutura o cria, você pode implementar ISerializationCallback e registrar isso por meio de on. AddSerializationCallback MessageBusBuilder