これまでのところ、RocketMQだけでサポートされているTAG
メッセージをフィルタリング、一つだけを持つことができますメッセージはTAG
、これはあまりにも複雑なニーズの制限です。したがって、我々はカスタムメッセージフィルタをサポートするために、SQLサブ92式の構文に基づいてフィルタ言語の合理的なセットを定義し、実装したいと考えています。
なぜ、SQL92のサブセットですか?
してみましょうRocketMQメッセージフィルタリング能力は、この質問の目的で、我々は、ほとんどの人がそれに精通している、SQL92が広く使用されている知っています。RocketMQの構文は合理的であるように、それを選択してください。
私の知る限りでは、ActiveMQのは、JavaCCの基礎に基づいて、この機能を達成している、それは非常に簡単で、かつ実行可能です。だから、僕はその構文の一部を抽出し、中RocketMQに統合します。
- 数値式:
>
、>=
、<
、<=
、BETWEEN
、=
。 - 文字式:
=
、<>
、IN
。 IS NULL
または、その後IS NOT NULL
。- ロジック
AND
、ロジックOR
、ロジックNOT
。
定数タイプ:
- デジタル:3.1415926、5。
- 文字「A」、それは単一引用符を持っている必要があります。
NULL
特定の定数で。TRUE
ブール:FALSE
、。