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á.
Personalizar o AWS Message Processing Framework para .NET
O AWS Message Processing Framework para .NET cria, envia e processa mensagens em três “camadas” diferentes:
-
Na camada mais externa, o framework cria a solicitação ou resposta nativa da AWS específica de um serviço. Com o Amazon SQS, por exemplo, ele cria solicitações
SendMessagee trabalha com os objetosMessagedefinidos pelo serviço. -
Dentro da solicitação e resposta do SQS, o framework define o elemento
MessageBody(ouMessagepara o Amazon SNS ouDetailpara o Amazon EventBridge) como um CloudEvent formatado em JSON. Ele contém metadados definidos pelo framework que podem ser acessados no objeto MessageEnvelopeao processar uma mensagem. -
Na camada mais interna, o atributo
datadentro do objeto JSON do CloudEvent 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>" }
É possível 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 é direcionada para os manipuladores. Por padrão, ele usa o nome completo do tipo .NET que corresponde à mensagem. Você pode substituí-lo por meio do parâmetromessageTypeIdentifierao associar o tipo de mensagem ao destino viaAddSQSPublisher,AddSNSPublisherouAddEventBridgePublisher. -
"source"indica qual sistema ou servidor enviou a mensagem.-
Esse será o nome da função se estiver publicando do AWS Lambda, o nome do cluster e o ARN da tarefa se estiver no Amazon ECS e o ID da instância se estiver no Amazon EC2, caso contrário, um valor alternativo de
/aws/messaging. -
Você pode substituí-lo por meio de
AddMessageSourceouAddMessageSourceSuffixnoMessageBusBuilder.
-
-
"time"definido como o DateTime atual em UTC. Isso pode ser substituído implementando o seu próprioIDateTimeHandlere injetando-o no contêiner de DI. -
"data"contém uma representação JSON do objeto .NET que foi enviado ou recebido como mensagem:-
ConfigureSerializationOptionsnoMessageBusBuilderpermite 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 deAddSerializationCallbacknoMessageBusBuilder.
-