本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
自訂 .NET 的 AWS 訊息處理架構
這是預覽版中某項功能的搶鮮版說明文件。內容可能變動。 |
.NET 的 AWS 消息處理框架在三個不同的「層」中構建,發送和處理消息:
-
在最外層,框架構構建特定於服務的 AWS-native 請求或響應。例如,使用 Amazon SQS,它可以建立
SendMessage
請求,並使用服務定義的Message
物件。 -
在 SQS 請求和響應中,框架將
MessageBody
元素(或Message
Amazon SNS 或 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,但是可以通過實現自己的 GUIDIMessageIdGenerator
並將其注入 DI 容器來覆蓋。 -
"type"
控制郵件路由至處理常式的方式。根據預設,這會使用與訊息對應的 .NET 類型的完整名稱。透過AddSQSPublisher
、AddSNSPublisher
或將訊息類型對應至目的地時,您可以透過messageTypeIdentifier
參數覆寫此參數AddEventBridgePublisher
。 -
"source"
指出傳送訊息的系統或伺服器。-
這將是函數名稱 (如果從中發佈) AWS Lambda,叢集名稱和任務 ARN (如果在 Amazon ECS 上),執行個體 ID (如果是在 Amazon EC2 上),否則後援值為。
/aws/messaging
-
您可以透過
AddMessageSource
或AddMessageSourceSuffix
在上覆寫此選項MessageBusBuilder
。
-
-
"time"
DateTime 在 UTC 中設定為目前的。這可以通過實現自己的IDateTimeHandler
並將其注入 DI 容器來覆蓋。 -
"data"
包含作為消息發送或接收的 .NET 對象的 JSON 表示:-
ConfigureSerializationOptions
onMessageBusBuilder
可讓您設定序列化和還原序列化訊息時要使用的項System.Text.Json.JsonSerializerOptions
目。 -
要在框架構建後注入其他屬性或轉換消息信封,可以通過
AddSerializationCallback
on 實現ISerializationCallback
和註冊它MessageBusBuilder
。
-