

La AWS SDK pour .NET V3 est passée en mode maintenance.

Nous vous recommandons de migrer vers la version [AWS SDK pour .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html). Pour plus de détails et d'informations sur la façon de migrer, veuillez consulter notre [annonce relative au mode de maintenance](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Personnalisation de l'infrastructure de traitement des AWS messages pour .NET
<a name="msg-proc-fw-customize"></a>

Le cadre de traitement des AWS messages pour .NET crée, envoie et gère les messages dans trois « couches » différentes :

1. Au niveau de la couche la plus externe, le framework crée la requête ou la réponse AWS-native spécifique à un service. Avec Amazon SQS, par exemple, il crée des [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)requêtes et travaille avec les [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html)objets définis par le service.

1. [Dans la demande et la réponse SQS, le framework définit l'`MessageBody`élément (ou `Message` pour Amazon SNS ou `Detail` pour EventBridge Amazon) au format JSON. CloudEvent](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) Il contient les métadonnées définies par le framework qui sont accessibles sur l'`MessageEnvelope`objet lors de la gestion d'un message.

1. Au niveau de la couche la plus interne, l'`data`attribut à l'intérieur de l'objet CloudEvent JSON contient une sérialisation JSON de l'objet .NET envoyé ou reçu sous forme de message.

   ```
   {
       "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>"
   }
   ```

Vous pouvez personnaliser la façon dont l'enveloppe du message est configurée et lue :
+ `"id"`identifie le message de manière unique. Par défaut, il est défini sur un nouveau GUID, mais celui-ci peut être remplacé en implémentant le vôtre `IMessageIdGenerator` et en l'injectant dans le conteneur DI. 
+ `"type"`contrôle la manière dont le message est acheminé vers les gestionnaires. Par défaut, le nom complet du type .NET correspondant au message est utilisé. Vous pouvez le remplacer via le `messageTypeIdentifier` paramètre lorsque vous mappez le type de message à la destination via `AddSQSPublisher``AddSNSPublisher`, ou`AddEventBridgePublisher`.
+ `"source"`indique le système ou le serveur qui a envoyé le message.
  + Il s'agira du nom de la fonction en cas de publication depuis AWS Lambda, du nom du cluster et de l'ARN de la tâche si vous utilisez Amazon ECS, de l'ID de l'instance si vous publiez depuis Amazon EC2, sinon d'une valeur de remplacement de`/aws/messaging`. 
  + Vous pouvez annuler cela via `AddMessageSource` ou `AddMessageSourceSuffix` sur le`MessageBusBuilder`.
+ `"time"`réglé sur le courant DateTime en UTC. Cela peut être contourné en implémentant le vôtre `IDateTimeHandler` et en l'injectant dans le conteneur DI.
+ `"data"`contient une représentation JSON de l'objet .NET envoyé ou reçu sous forme de message :
  + `ConfigureSerializationOptions`on vous `MessageBusBuilder` permet de configurer le [https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions)qui sera utilisé lors de la sérialisation et de la désérialisation du message.
  + Pour injecter des attributs supplémentaires ou transformer l'enveloppe du message une fois que le framework l'a créée, vous pouvez l'implémenter `ISerializationCallback` et l'enregistrer via `AddSerializationCallback` on`MessageBusBuilder`.