A versão 4 (V4) do AWS SDK para .NET foi lançada!
Para começar a usar a nova versão do SDK, consulte o Guia do desenvolvedor AWS SDK para .NET (V4), especialmente o tópico sobre migração para a versão 4.
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
O AWS Message Processing Framework para.NET cria, envia e manipula mensagens em três “camadas” diferentes:
-
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 osMessageobjetos definidos pelo serviço. -
Dentro da solicitação e resposta do SQS, a estrutura define o
MessageBodyelemento (ouMessagepara o Amazon SNSDetailou para a EventBridge Amazon) como um formato JSON. CloudEventEle contém metadados definidos pela estrutura que podem ser acessados no MessageEnvelopeobjeto ao manipular uma mensagem. -
Na camada mais interna, o
dataatributo 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óprioIMessageIdGeneratore 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 domessageTypeIdentifierparâmetro ao mapear o tipo de mensagem para o destino viaAddSQSPublisher,AddSNSPublisher, 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 na Amazon, caso contrário EC2, um valor alternativo de.
/aws/messaging -
Você pode substituir isso por meio de
AddMessageSourceouAddMessageSourceSuffixnoMessageBusBuilder.
-
-
"time"definido para o atual DateTime em UTC. Isso pode ser substituído implementando o seu próprioIDateTimeHandlere injetando-o no contêiner DI. -
"data"contém uma representação JSON do objeto.NET que foi enviado ou recebido como mensagem:-
ConfigureSerializationOptionsonMessageBusBuilderpermite que você configure oSystem.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
ISerializationCallbacke registrar isso por meio de on.AddSerializationCallbackMessageBusBuilder
-