单条消息转换 (SMT) 可以设置为主题或订阅的属性。
主题 SMT 会在消息持久化到主题之前对消息应用转换。
订阅 SMT 会在消息传送到订阅之前对消息应用转换。
以下是将 SMT 应用于主题(而非订阅)的一些原因:
您希望同一主题上的多个订阅接收经过转换的消息。如果某个主题上的所有订阅都应接收经过转换的消息,则最好在发布端一次性应用转换。
您希望尽可能降低存储、跨区域传送和订阅者传送费用。如果您使用在主题上定义的 SMT 从消息中移除不必要的字段,则所有后续数据处理和传送操作都会受益于消息占用空间的缩减。
您希望在发布时处理无效消息。如果您对某个主题使用 SMT 来验证消息,则任何包含无效消息的发布操作都将失败。您可以在发布商中决定如何处理这些失败。
以下是将 SMT 应用于订阅(而非主题)的一些原因:
您只需针对单个订阅进行转换。如果您只需要对单个订阅进行转换,订阅 SMT 会非常有用。
您想将无效消息写入死信主题。您还可以将订阅 SMT 与死信主题搭配使用,以归档失败的转换。这些错误会导致消息被路由到指定的死信主题。
您可以组合使用主题 SMT 和订阅 SMT,对单个消息执行独立转换。