メッセージのクレンジングを実行するために、メッセージ分割、動的ルーティング、およびメッセージ強化テンプレートなどの一般的なメッセージ処理テンプレートが提供されます。 Function Computeのテンプレートを直接使用して、メッセージを処理したり、ビジネス要件に基づいてテンプレートのコードを変更したりできます。 このトピックでは、メッセージクレンジングの実行に使用されるテンプレートの種類と、テンプレートの使用方法について説明します。 このトピックでは、例としてApsaraMQ for RocketMQを使用します。
概要
データクレンジング機能は、Function Computeに基づく基本的な演算子機能を提供します。 ApsaraMQ for RocketMQでメッセージデータクレンジングタスクを作成した後、Function Computeにログインしてコードと関数の設定を変更できます。
演算子 | 説明 |
メッセージフィルタリング | 正規表現に基づいてメッセージコンテンツを照合し、一致したメッセージを指定した宛先に送信します。 |
コンテンツセグメンテーション | 正規表現に基づいてメッセージコンテンツを分割し、分割メッセージを指定された宛先に送信します。 |
動的ルーティング | 正規表現に基づいてメッセージコンテンツを照合し、一致したメッセージを指定された宛先に送信し、一致しなかったメッセージをデフォルトの宛先に送信します。 |
コンテンツ強化 | 強化ソースに基づいてメッセージコンテンツを強化します。 たとえば、メッセージの元のコンテンツにAccountIDが含まれている場合、AccountIDを使用してデータベースを照会し、顧客リージョンを取得します。 システムは、顧客領域をソースメッセージ本体に挿入し、メッセージ本体を指定された宛先サービスに送信します。 |
コンテンツマッピング | 正規表現に基づいてメッセージコンテンツをマップします。 例えば、システムは、メッセージ内のセンシティブフィールドをマスクするか、またはメッセージサイズを最小サイズに低減することができる。 |
シナリオ
コンテンツ分割
次のメッセージには、学生のリストが含まれています。
メッセージ:
[ジャック、男性、17、クラス4; アリス、女性、17、クラス3; ジョン、男性、17、クラス4]
指定した宛先サービスにメッセージを送信する前に、メッセージを次のメッセージに分割します。各メッセージには1人の学生に関する情報が含まれています。
メッセージ:
[ジャック、男性、17、クラス4]
メッセージ:
[アリス、女性、17、クラス3]
メッセージ:
[ジョン、男性、クラス17、クラス4]
次の図にプロセスを示します。
動的ルーティング
次のメッセージには歯磨き粉のリストが含まれています。
メッセージ:
[BrandA、歯磨き粉、$12.98、100g
BrandB、歯磨き粉、$7.99、80g
BrandC、歯磨き粉、$1.99、100g]
カスタム動的ルールに基づいて、指定した宛先トピックにリストを送信する必要があります。 次の項目は、ルールを説明します。
BrandAで始まるメッセージをBrandA-item-topicおよびBrandA-discount-topic topicsに送信します。
BrandBで始まるメッセージをBrandB-item-topicおよびBrandB-discount-topicトピックに送信します。
Unknown-brand-topicトピックに他のメッセージを送信します。
次のサンプルコードは、ルールのJSON形式を示しています。
{
"defaultTopic": "Unknown-brand-topic" 、
"rules": [
{
"regex": "^ BrandA" 、
"targetTopics": [
"BrandA-item-topic" 、
"BrandA-割引-トピック"
]
},
{
"regex": "^ BrandB" 、
"targetTopics": [
"BrandB-item-topic" 、
"BrandB-割引-トピック"
]
}
]
}
次の図にプロセスを示します。
コンテンツ強化
この例では、IPアドレスセグメントが強化されています。 次のコードスニペットは、サービスのアクセスログを示しています。
{
"accountID": "164901546557 ****" 、
"hostIP": "192.168.XX.XX"
}
IPアドレスのソースを照会する必要があり、マッピング関係をMySQLデータベースに格納する必要があります。
CREATE TABLE 'tb_ip' (
-> 'IP' VARCHAR(256) NOT NULL、
-> 'Region' VARCHAR(256) NOT NULL、
-> 'ISP' VARCHAR(256) NOT NULL、
-> プライマリーキー ('IP')
-> );
次のコードスニペットは、処理されたメッセージを示します。
{
"accountID": "164901546557 ****" 、
"hostIP": "192.168.XX.XX" 、
"region": "北京"
}
次の図にプロセスを示します。
コンテンツマッピング
次のメッセージには、会社の従業員に関する登録情報が含まれています。 情報には、従業員IDや携帯電話番号などの機密コンテンツが含まれます。
James、従業員ID 1、131 1111 1111
メアリー、従業員ID 2、132 2222 2222
デビッド、従業員ID 3、133 3333 3333
メッセージが宛先サービスに送信される前に、前のメッセージの機密コンテンツをマスクする必要があります。 次のサンプルコードに例を示します。
Ja * 、従業員ID * 、**********
Ma * 、従業員ID * 、**********
Dav * 、従業員ID * 、***********
次の図にプロセスを示します。
手順
ApsaraMQ for RocketMQコンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 タスクリスト ページで、[タスクの作成] をクリックします。
[タスクの作成] ページの [ソース] 、[フィルタリング] 、[変換] 、[シンク] ステップで、イベントソース、フィルタリングルール、データクレンジングテンプレート、およびイベントターゲットを設定します。
① ソースと ④ シンク
別のApsaraMQ for RocketMQインスタンスを選択します。
② フィルタリング
一致するルールを指定します。 このステップは省略可能です。 一致ルールを指定しない場合、すべてのイベントが一致します。 一致ルールの詳細については、「メッセージフィルタリング」をご参照ください。
③ 変革
Function Computeが提供するテンプレートを選択します。 テンプレートには、コンテンツ分割、コンテンツマッピング、コンテンツ強化、動的ルーティングが含まれます。 ビジネス要件に基づいて、上記のテンプレートのいずれかを選択できます。 テンプレートは基本的なデータ処理ロジックを提供します。これは直接使用またはカスタム調整できます。
この例では、コンテンツ分割テンプレートが選択されています。