Anpassen des AWS Nachrichtenverarbeitungs-Frameworks für .NET - AWS SDK for .NET

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Anpassen des AWS Nachrichtenverarbeitungs-Frameworks für .NET

Dies ist die Vorabdokumentation für ein Feature in der Vorschauversion. Änderungen sind vorbehalten.

Das AWS Message Processing Framework für .NET erstellt, sendet und verarbeitet Nachrichten in drei verschiedenen „Ebenen“:

  1. Auf der äußersten Ebene erstellt das Framework die AWS-native Anfrage oder Antwort, die für einen Service spezifisch ist. Mit Amazon SQS erstellt es beispielsweise SendMessage Anforderungen und arbeitet mit den Message Objekten, die vom Service definiert werden.

  2. Innerhalb der SQS-Anforderung und -Antwort legt das Framework das -MessageBodyElement (oder Message für Amazon SNS oder Detail für Amazon EventBridge) auf ein JSON-formatiertes CloudEvent fest. Dies enthält Metadaten, die vom Framework festgelegt wurden und auf dem MessageEnvelope Objekt verfügbar sind, wenn eine Nachricht verarbeitet wird.

  3. Auf der innersten Ebene enthält das data Attribut innerhalb des CloudEvent JSON-Objekts eine JSON-Serialisierung des .NET-Objekts, das als Nachricht gesendet oder empfangen wurde.

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

Sie können anpassen, wie der Nachrichtenumschlag konfiguriert und gelesen wird:

  • "id" identifiziert die Nachricht eindeutig. Standardmäßig ist sie auf eine neue GUID festgelegt, aber dies kann überschrieben werden, indem Sie Ihre eigene implementieren IMessageIdGenerator und diese in den DI-Container einfügen.

  • "type" steuert, wie die Nachricht an Handler weitergeleitet wird. Standardmäßig wird der vollständige Name des .NET-Typs verwendet, der der Nachricht entspricht. Sie können dies über den messageTypeIdentifier Parameter überschreiben, wenn Sie den Nachrichtentyp über AddSQSPublisher, AddSNSPublisheroder dem Ziel zuordnenAddEventBridgePublisher.

  • "source" gibt an, welches System oder welcher Server die Nachricht gesendet hat.

    • Dies ist der Funktionsname bei der Veröffentlichung von AWS Lambda, der Clustername und der Aufgaben-ARN bei Amazon ECS, die Instance-ID bei Amazon EC2, andernfalls ein Fallback-Wert von /aws/messaging.

    • Sie können dies über AddMessageSource oder AddMessageSourceSuffix auf der überschreibenMessageBusBuilder.

  • "time" wird DateTime in UTC auf den aktuellen festgelegt. Dies kann überschrieben werden, indem Sie Ihren eigenen implementieren IDateTimeHandler und diesen in den DI-Container einfügen.

  • "data" enthält eine JSON-Darstellung des .NET-Objekts, das als Nachricht gesendet oder empfangen wurde:

    • ConfigureSerializationOptions Mit in MessageBusBuilder können Sie die konfigurierenSystem.Text.Json.JsonSerializerOptions, die beim Serialisieren und Deserialisieren der Nachricht verwendet wird.

    • Um zusätzliche Attribute einzufügen oder den Nachrichtenumschlag zu transformieren, sobald das Framework ihn erstellt hat, können Sie ihn über AddSerializationCallback auf implementieren ISerializationCallback und registrierenMessageBusBuilder.