のバージョン 4 (V4) AWS SDK for .NET がリリースされました。
SDK の新しいバージョンの使用を開始するには、「AWS SDK for .NET (V4) デベロッパーガイド」、特に「バージョン 4 への移行」に関するトピックを参照してください。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Message Processing Framework for .NET をカスタマイズします
AWS Message Processing Framework for .NET は、3 つの異なる「レイヤー」でメッセージを構築、送信、処理します。
-
最外部レイヤーで、フレームワークはサービスに固有の AWS ネイティブリクエストまたはレスポンスを構築します。例えば、Amazon SQS では、
SendMessageリクエストを構築し、サービスによって定義されたMessageオブジェクトと連携します。 -
SQS リクエストおよびレスポンス内で、フレームワークは
MessageBody要素 (Amazon SNS の場合はMessage、Amazon EventBridge の場合はDetail) を JSON 形式の CloudEventに設定します。これには、メッセージを処理するときに MessageEnvelopeオブジェクトでアクセスできるフレームワークによって設定されたメタデータが含まれます。 -
最も内側のレイヤーでは、CloudEvent JSON オブジェクト内の
data属性に、メッセージとして送受信された .NET オブジェクトの JSON シリアル化が含まれています。{ "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>" }
メッセージエンベロープの設定方法と読み取り方法をカスタマイズできます。
-
"id"はメッセージを一意に識別します。デフォルトでは新しい GUID に設定されますが、独自のIMessageIdGeneratorを実装して DI コンテナに挿入することで上書きできます。 -
"type"は、メッセージをハンドラーにルーティングする方法を制御します。デフォルトでは、メッセージに対応する .NET タイプのフルネームが使用されます。AddSQSPublisher、AddSNSPublisher、またはAddEventBridgePublisherを介してメッセージタイプを送信先にマッピングするときに、messageTypeIdentifierパラメータを使用してこれを上書きできます。 -
"source"は、メッセージを送信したシステムまたはサーバーを示します。-
これは、AWS Lambda から発行する場合は関数名であり、Amazon ECS の場合はクラスター名とタスク ARN であり、Amazon EC2 の場合はインスタンス ID であり、それ以外の場合は
/aws/messagingのフォールバック値です。 -
これは、
MessageBusBuilderでのAddMessageSourceまたはAddMessageSourceSuffixで上書きできます。
-
-
UTC での現在の DateTime に設定された
"time"。これは、独自のIDateTimeHandlerを実装し、DI コンテナに挿入することで上書きできます。 -
"data"には、メッセージとして送受信された .NET オブジェクトの JSON 表現が含まれます。-
MessageBusBuilderに対するConfigureSerializationOptionsにより、メッセージをシリアル化および逆シリアル化するときに使用されるSystem.Text.Json.JsonSerializerOptionsを設定できます。 -
フレームワークが構築したら、追加の属性を挿入したり、メッセージエンベロープを変換したりするには、
ISerializationCallbackを実装して、それをMessageBusBuilderに対するAddSerializationCallbackを介して登録できます。
-