

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# FIFO 主題的 Amazon SNS 訊息篩選
<a name="fifo-message-filtering"></a>

Amazon SNS FIFO 主題支援訊息篩選。透過從發佈者系統卸載訊息路由邏輯，以及從訂閱者系統卸載訊息篩選邏輯，藉此簡化您的架構。

當您將 Amazon SQS FIFO 或標準佇列訂閱至 SNS FIFO 主題時，可以使用訊息篩選來指定訂閱用戶接收訊息子集，而不是所有訊息。每個訂閱者都可以將自己的篩選政策設定為訂閱屬性。根據篩選政策範圍，篩選政策會與傳入訊息屬性或訊息內文相符。如果篩選政策符合，則主題會將郵件的副本傳送給訂閱者。如果沒有相符項目，主題就不會傳送訊息的副本。

在[汽車零件價格管理範例使用案例](fifo-example-use-case.md)中，假設已設定下列 Amazon SNS 篩選政策，且篩選政策範圍為 `MessageBody`：
+ 對於批發佇列，篩選政策 `{"business":["wholesale"]}` 將每個具有名為 `business` 和 `wholesale` 索引鍵的訊息配對在一組值中。在下圖中，訊息 **m1** 裡其中一個索引鍵是值為 `wholesale` 的 `business`。訊息 **m3** 裡其中一個索引鍵是值為 `["wholesale,retail"]` 的 `business`。因此，兩者皆是 **m1** 和 **m3** 符合篩選政策的準則，並且兩個訊息都會傳遞至批發佇列。
+ 對於零售佇列，篩選政策 `{"business":["retail"]}` 將每個具有名為 `business` 和 `retail` 索引鍵的訊息配對在一組值中。在圖表中，訊息 **m2** 裡其中一個索引鍵是值為 `retail` 的 `business`。訊息 **m3** 裡其中一個索引鍵是值為 `["wholesale,retail"]` 的 `business`。因此，兩者皆是 **m2** 和 **m3** 符合篩選政策的準則，而且兩個訊息都會傳遞至零售佇列。
+ 對於分析佇列，我們希望 Amazon Athena 能夠接收所有記錄，因此不會套用篩選政策。

![\[Amazon SNS FIFO 主題如何根據訊息內容，利用篩選政策將訊息路由到不同 Amazon SQS 佇列的範例。訊息 m1 和 m3 的「商業」金鑰設為「批發」，會傳送到批發佇列，而訊息 m2 的「零售」指定路由到零售佇列。這可示範目標訊息傳遞，確保每個訂閱者函數只會收到相關訊息，進而最佳化處理效率和資料相關性。\]](http://docs.aws.amazon.com/zh_tw/sns/latest/dg/images/sns-fifo-filtering.png)


SNS FIFO 主題支援各種相符運算子，包括屬性字串值、屬性數值和屬性索引鍵。如需詳細資訊，請參閱[Amazon SNS 訊息篩選](sns-message-filtering.md)。

SNS FIFO 主題不會將重複的訊息傳遞至訂閱的端點。如需詳細資訊，請參閱[FIFO 主題的 Amazon SNS 訊息重複資料刪除](fifo-message-dedup.md)。