単一メッセージ変換(SMT)は、トピックまたはサブスクリプションのプロパティとして設定できます。
トピック SMT は、メッセージがトピックに保持される前に、メッセージに変換を適用します。
サブスクリプション SMT は、メッセージがサブスクリプションに配信される前に、メッセージに変換を適用します。
サブスクリプションではなくトピックに SMT を適用する理由は次のとおりです。
同じトピックの複数のサブスクリプションが変換されたメッセージを受信する必要がある場合。トピックのすべてのサブスクリプションが変換されたメッセージを受信する場合は、パブリッシュ側で変換を 1 回適用することをおすすめします。
ストレージ、リージョン間配信、サブスクライバー配信の費用を最小限に抑える。トピックで定義された SMT を使用してメッセージから不要なフィールドを削除すると、その後のデータ処理と配信オペレーションはすべて、メッセージのフットプリントの削減によってメリットがもたらされます。
無効なメッセージを公開時に処理する必要がある。トピックで SMT を使用してメッセージを検証すると、無効なメッセージを含むパブリッシュは失敗します。これらのエラーの処理方法はパブリッシャーで決定できます。
トピックではなくサブスクリプションに SMT を適用する理由は次のとおりです。
変換が必要なサブスクリプションは 1 つだけです。サブスクリプション SMT は、単一のサブスクリプションの変換のみが必要な場合に便利です。
無効なメッセージをデッドレター トピックに書き込む必要がある。デッドレター トピックを使用するサブスクリプション SMT を使用して、失敗した変換をアーカイブすることもできます。エラーが発生すると、メッセージは指定されたデッドレター トピックに転送されます。
トピック SMT とサブスクリプション SMT を組み合わせて、1 つのメッセージに対して独立した変換を実行できます。