

 AWS SDK untuk .NET V3 telah memasuki mode pemeliharaan.

Kami menyarankan Anda bermigrasi ke [AWS SDK untuk .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html). Untuk detail dan informasi tambahan tentang cara bermigrasi, silakan lihat [pengumuman mode pemeliharaan](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/) kami.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kustomisasi Kerangka Pemrosesan AWS Pesan untuk.NET
<a name="msg-proc-fw-customize"></a>

 AWS Message Processing Framework untuk.NET membangun, mengirim, dan menangani pesan dalam tiga “lapisan” yang berbeda:

1. Pada lapisan terluar, kerangka kerja membangun permintaan AWS-native atau respons khusus untuk layanan. Dengan Amazon SQS misalnya, ia membangun [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)permintaan, dan bekerja dengan [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_Message.html)objek yang ditentukan oleh layanan.

1. [Di dalam permintaan dan respons SQS, framework menetapkan `MessageBody` elemen (atau `Message` untuk Amazon SNS `Detail` atau EventBridge Amazon) ke format JSON. CloudEvent](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md) Ini berisi metadata yang ditetapkan oleh kerangka kerja yang dapat diakses pada `MessageEnvelope` objek saat menangani pesan.

1. Pada lapisan terdalam, `data` atribut di dalam objek CloudEvent JSON berisi serialisasi JSON dari objek.NET yang dikirim atau diterima sebagai pesan.

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

Anda dapat menyesuaikan bagaimana amplop pesan dikonfigurasi dan membaca:
+ `"id"`secara unik mengidentifikasi pesan. Secara default ini disetel ke GUID baru, tetapi ini dapat diganti dengan mengimplementasikan milik Anda sendiri `IMessageIdGenerator` dan menyuntikkannya ke dalam wadah DI. 
+ `"type"`mengontrol bagaimana pesan dirutekan ke penangan. Secara default ini menggunakan nama lengkap tipe.NET yang sesuai dengan pesan. Anda dapat mengganti ini melalui `messageTypeIdentifier` parameter saat memetakan jenis pesan ke tujuan melalui`AddSQSPublisher`,`AddSNSPublisher`, atau. `AddEventBridgePublisher`
+ `"source"`menunjukkan sistem atau server mana yang mengirim pesan.
  + Ini akan menjadi nama fungsi jika menerbitkan dari AWS Lambda, nama cluster dan tugas ARN jika di Amazon ECS, ID instance jika di Amazon EC2, jika tidak nilai fallback dari. `/aws/messaging` 
  + Anda dapat mengganti ini melalui `AddMessageSource` atau `AddMessageSourceSuffix` di. `MessageBusBuilder`
+ `"time"`diatur ke arus DateTime di UTC. Ini dapat diganti dengan mengimplementasikan milik Anda sendiri `IDateTimeHandler` dan menyuntikkannya ke dalam wadah DI.
+ `"data"`berisi representasi JSON dari objek.NET yang dikirim atau diterima sebagai pesan:
  + `ConfigureSerializationOptions`on `MessageBusBuilder` memungkinkan Anda untuk mengonfigurasi [https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions](https://learn.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializeroptions)yang akan digunakan saat membuat serial dan deserialisasi pesan.
  + Untuk menyuntikkan atribut tambahan atau mengubah amplop pesan setelah kerangka kerja membangunnya, Anda dapat menerapkan `ISerializationCallback` dan mendaftarkannya melalui on. `AddSerializationCallback` `MessageBusBuilder`