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

La AWS SDK para .NET V3 ha entrado en modo de mantenimiento.

Le recomendamos que migre a la AWS SDK para .NET V4. Para obtener información y detalles adicionales sobre cómo migrar, consulta nuestro anuncio sobre el modo de mantenimiento.

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.