Personalice el marco de procesamiento de AWS mensajes para.NET - AWS SDK for .NET

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.

Personalice el marco de procesamiento de AWS mensajes para.NET

Esta es una documentación preliminar para una característica en versión de vista previa. Está sujeta a cambios.

El marco de procesamiento de AWS mensajes 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 AWS nativa específica de un servicio. Con Amazon SQS, por ejemplo, crea SendMessagesolicitudes y trabaja con los Messageobjetos definidos por el servicio.

  2. Dentro de la solicitud y respuesta de SQS, el marco establece el MessageBody elemento (o Message para Amazon SNS Detail o EventBridge Amazon) en formato JSON. CloudEvent Contiene los metadatos establecidos por el marco a los que se puede acceder en el MessageEnvelope objeto cuando se gestiona un mensaje.

  3. En la capa más interna, el data atributo del objeto CloudEvent JSON contiene una serialización en 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 forma en que se configura y lee el sobre del mensaje:

  • "id"identifica el mensaje de forma exclusiva. De forma predeterminada, se establece en un nuevo GUID, pero esto se puede anular implementando el suyo propio IMessageIdGenerator e inyectándolo en el contenedor del 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 messageTypeIdentifier parámetro al asignar el tipo de mensaje al destino mediante AddSQSPublisherAddSNSPublisher, oAddEventBridgePublisher.

  • "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, el ID de la instancia si está en Amazon EC2; de lo contrario, será un valor alternativo de. /aws/messaging

    • Puede anular esto mediante AddMessageSource o en el. AddMessageSourceSuffix MessageBusBuilder

  • "time"establecido en el valor actual DateTime en UTC. Esto se puede anular implementando el suyo 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:

    • ConfigureSerializationOptionson MessageBusBuilder le permite configurar el System.Text.Json.JsonSerializerOptionsque se utilizará al serializar y deserializar el mensaje.

    • Para añadir atributos adicionales o transformar el sobre del mensaje una vez que el framework lo haya creado, puede implementarlos ISerializationCallback y registrarlos mediante on. AddSerializationCallback MessageBusBuilder