目前爲止,RocketMQ僅僅支持經過TAG
來過濾消息,可是一個消息只能有一個TAG
,這個對於複雜需求來講太過於限制了。所以,咱們但願基於SQL 92表達式語法的子集定義和實現一種合理的篩選語言,以支持自定義消息篩選。設計
讓RocketMQ具有消息過濾的能力是這個問題的目的,咱們知道SQL92被普遍使用,大多數人都熟悉它。所以選擇它做爲RocketMQ的語法是合理的。code
據我所知,ActiveMQ已經在基於JavaCC的基礎上實現了這個功能,它很簡單,而且是可執行的。因此我只是提取它的一些語法並集成到RocketMQ中。class
>
,>=
,<
,<=
,BETWEEN
,=
.=
,<>
,IN
.IS NULL
或則 IS NOT NULL
.AND
, 邏輯OR
, 邏輯NOT
.常數類型:基礎
NULL
,特別的常量。TRUE
,FALSE
。