Personalización del Marco de procesamiento de mensajes de AWS para .NET - AWS SDK para .NET (V3)

¡Se AWS SDK para .NET ha publicado la versión 4 (V4) del!

Para empezar a usar la nueva versión del SDK, consulte la Guía para desarrolladores de AWS SDK para .NET (versión 4), especialmente el tema Migración a la versión 4.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Personalización del Marco de procesamiento de mensajes de AWS para .NET

El Marco de procesamiento de mensajes de AWS para .NET crea, envía y gestiona los mensajes en tres “capas” diferentes:

  1. En la capa más externa, el marco crea la solicitud o respuesta nativa de AWS específica de un servicio. Con Amazon SQS, por ejemplo, crea solicitudes SendMessage y trabaja con los objetos Message definidos por el servicio.

  2. Dentro de la solicitud y respuesta SQS, el marco establece el elemento MessageBody (Message para Amazon SNS o Detail para Amazon EventBridge) en un CloudEvent con formato JSON. Contiene metadatos establecidos por el marco que son accesibles en el objeto MessageEnvelope al gestionar un mensaje.

  3. En la capa más interna, el atributo data del objeto JSON de CloudEvent contiene una serialización JSON del objeto .NET que se envió o recibió como mensaje.

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

Puede personalizar la configuración y la lectura del sobre del mensaje:

  • "id" identifica el mensaje de forma única. De forma predeterminada, se establece un nuevo GUID, pero esto se puede anular implementando su propio elemento IMessageIdGenerator e inyectándolo en el contenedor DI.

  • "type" controla cómo se enruta el mensaje a los controladores. De forma predeterminada, utiliza el nombre completo del tipo .NET que corresponde al mensaje. Puede anularlo mediante el parámetro messageTypeIdentifier al asignar el tipo de mensaje al destino a través de AddSQSPublisher, AddSNSPublisher o AddEventBridgePublisher.

  • "source" indica qué sistema o servidor envió el mensaje.

    • Este será el nombre de la función si se publica desde AWS Lambda, el nombre del clúster y el ARN de la tarea si está en Amazon ECS o el ID de la instancia si está en Amazon EC2. De lo contrario, será un valor alternativo de /aws/messaging.

    • Puede anularlo mediante AddMessageSource o AddMessageSourceSuffix en el elemento MessageBusBuilder.

  • "time" se ha definido en la fecha y hora actual en UTC. Esto se puede anular implementando su propio elemento IDateTimeHandler e inyectándolo en el contenedor DI.

  • "data" contiene una representación en JSON del objeto .NET que se envió o recibió como mensaje:

    • ConfigureSerializationOptions en el elemento MessageBusBuilder le permite configurar el objeto System.Text.Json.JsonSerializerOptions que se utilizará para serializar y deserializar el mensaje.

    • Para añadir atributos adicionales o transformar el sobre del mensaje una vez que el marco lo haya creado, puede implementar ISerializationCallback y registrarlo mediante AddSerializationCallback en MessageBusBuilder.