メッセージのクレンジングを実行するために、メッセージ分割、動的ルーティング、およびメッセージ強化テンプレートなどの一般的なメッセージ処理テンプレートが提供されます。 テンプレートを直接使用してメッセージを処理したり、ビジネス要件に基づいてテンプレートのコードを変更したりできます。 このトピックでは、ApsaraMQ for RocketMQでメッセージクレンジングを実行するために使用されるテンプレートの種類とテンプレートの使用方法について説明します。
背景情報
メッセージクレンジングタスクは基本的な演算子機能を提供し、Function Computeは基になるロジックを提供します。 ApsaraMQ for RocketMQでメッセージクレンジングタスクを作成した後、Function Computeコンソールにログインしてコードをカスタマイズし、関数設定を変更できます。
演算子 | 説明 |
メッセージフィルタリング | 正規表現に基づいてメッセージの内容を照合し、一致したメッセージを指定した宛先に送信します。 詳細については、「イベントパターン」をご参照ください。 |
メッセージ変換 | 文字列一致条件に基づいてメッセージコンテンツを変換し、変換されたメッセージを指定された宛先に送信します。 例えば、文字ケース変換を行うことができる。 詳細については、「イベント変換」をご参照ください。 |
正規表現に基づいてメッセージコンテンツを分割し、分割メッセージを指定された宛先に送信します。 | |
正規表現に基づいてメッセージコンテンツを照合し、一致したメッセージを指定した宛先に送信し、一致しなかったメッセージをデフォルトの宛先に送信します。 | |
強化ソースに基づいてメッセージコンテンツを強化します。 メッセージの元のコンテンツにAccountIDが含まれている場合、AccountIDを使用してデータベースを照会し、顧客リージョンを取得します。 システムは、顧客領域をソースメッセージ本体に挿入し、メッセージ本体を指定された宛先サービスに送信します。 | |
正規表現に基づいてメッセージコンテンツをマップします。 例えば、システムは、メッセージ内のセンシティブフィールドをマスクするか、またはメッセージサイズを最小サイズに低減することができる。 |
コンテンツ分割
例
次のメッセージには、学生のリストが含まれています。
message:
[Jack, Male, 17, Class 4; Alice, Female, 17, Class 3; John, Male, 17, Class 4]特定の宛先サービスにメッセージを送信する前に、メッセージを次のメッセージに分割する必要があります。各メッセージには1人の学生に関する情報が含まれています。 例:
message:
[Jack, Male, 17, Class 4]
message:
[Alice, Female, 17, Class 3]
message:
[John, Male, Class 17, Class 4]
手順
ApsaraMQ for RocketMQコンソール にログインします。
左側のナビゲーションウィンドウで、 を選択します。 上部のナビゲーションバーで、リージョンを選択します。
メッセージの流出ページでタスクの作成 をクリックします。
メッセージ流出タスクの作成パネルで、次のパラメータを設定し、確認をクリックします。
説明に従って、次のパラメーターを設定します。 他のパラメーターのデフォルト値を保持します。
基本情報
パラメーター
説明
タスク名。
タスクの名前を入力します。
メッセージ流出タスクタイプ
この例では、ApsaraMQ for RocketMQを選択します。 ApsaraMQ for RocketMQ、ApsaraMQ for RabbitMQ、message Service、およびApsaraMQ for Kafkaのメッセージサービスがサポートされています。
リソース設定
パラメーター
説明
ソース
リージョン
この例では、中国 (杭州) が選択されています。
バージョン
ApsaraMQ for RocketMQのバージョンを選択します。 この例では、RocketMQ 5.xが選択されています。
インスタンス
メッセージを生成するApsaraMQ for RocketMQインスタンス。
トピック
ソースインスタンスのトピックを選択します。
ターゲット
バージョン
メッセージを受信するApsaraMQ for RocketMQのバージョンを選択します。 この例では、RocketMQ 5.xが選択されています。
インスタンスID
メッセージを受信するApsaraMQ for RocketMQインスタンスのID。
トピック
メッセージの受信に使用するトピック。
データ処理
メッセージフィルタリング: [なし] を選択します。
メッセージ変換: [カスタム設定] を選択します。 [メッセージ本文] を [データクレンジング] に設定し、[関数テンプレートの作成] を選択します。 関数テンプレートをContent Splitting transform_splitに設定し、ビジネス要件に基づいて関数コードを変更します。
作成後、Function Computeコンソールにログインして、作成したサービスと関数を表示できます。
動的ルーティング
例
次のメッセージには歯磨き粉のリストが含まれています。
message:
[BrandA, toothpaste, $12.98, 100g
BrandB, toothpaste, $7.99, 80g
BrandC, toothpaste, $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-discount-topic"
]
},
{
"regex": "^BrandB",
"targetTopics": [
"BrandB-item-topic",
"BrandB-discount-topic"
]
}
]
}
手順
詳細な手順については、「コンテンツ分割」をご参照ください。 関数テンプレートをDynamic Routing dynamic_routingに設定します。
コンテンツ強化
例
この例では、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,
-> PRIMARY KEY (`IP`)
-> );次のコードスニペットは、処理されたメッセージを示します。
{
"accountID": "164901546557****",
"hostIP": "192.168.XX.XX",
"region": "beijing"
}
手順
詳細な手順については、「コンテンツ分割」をご参照ください。 関数テンプレートをContent Enrichment transform_enrichmentに設定します。
コンテンツマッピング
例
次のメッセージには、会社の従業員に関する登録情報が含まれています。 情報には、従業員IDや携帯電話番号などの機密コンテンツが含まれます。
Jack, Employee ID 1, 131 1111 1111
Alice, Employee ID 2, 132 2222 2222
John, Employee ID 3, 133 3333 3333 メッセージが宛先サービスに送信される前に、前のメッセージの機密コンテンツをマスクする必要があります。 例:
Ja**, Employee ID *, ***********
Alic*, Employee ID *, ***********
Joh*, Employee ID *, *********** 
手順
詳細な手順については、「コンテンツ分割」をご参照ください。 [関数テンプレート] を [コンテンツマッピングtransform_projection] に設定します。