本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为.NET 自定义 Amazon 消息处理框架
这是适用于预览版中功能的预发布文档。本文档随时可能更改。 |
.NET 的 Amazon 消息处理框架在三个不同的 “层” 中构建、发送和处理消息:
-
在最外层,框架构建特定于服务的 Amazon-native 请求或响应。例如,在 Amazon SQS 中,它可以生成
SendMessage
请求并处理服务定义的Message
对象。 -
在 SQS 请求和响应中,框架将
MessageBody
元素(或者Message
对于亚马逊 SNS 或亚马逊)设置Detail
为 JS EventBridge ON 格式。 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"
表示哪个系统或服务器发送了消息。-
如果从中发布,这将是函数名称;如果在 Amazon ECS 上发布 Amazon Lambda,则为集群名称和任务 ARN;如果在 Amazon EC2 上,则为实例 ID,否则为后备值。
/aws/messaging
-
您可以通过
AddMessageSource
或AddMessageSourceSuffix
在上覆盖此设置MessageBusBuilder
。
-
-
"time"
在 UTC DateTime 中设置为当前。这可以通过实现自己的内容并将其注入到 DIIDateTimeHandler
容器中来覆盖。 -
"data"
包含作为消息发送或接收的.NET 对象的 JSON 表示形式:-
ConfigureSerializationOptions
onMessageBusBuilder
允许您配置序列化和反序列化消息时将使用的。System.Text.Json.JsonSerializerOptions
-
要注入其他属性或在框架构建消息封套后对其进行转换,您可以通过
AddSerializationCallback
on 实现ISerializationCallback
和注册该属性MessageBusBuilder
。
-