

Versi 4 (V4) dari AWS SDK untuk .NET telah dirilis\!

Untuk informasi tentang melanggar perubahan dan memigrasi aplikasi Anda, lihat [topik migrasi](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html).

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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`