過濾訊息的兩種方式

2021-10-07 04:29:44 字數 969 閱讀 1245

在大多數情況下,tag是乙個簡單而有用的設計,其可以來選擇您想要的訊息。例如:

defaultmqpushconsumer consumer = new defaultmqpushconsumer("cid_example");

consumer.subscribe("topic", "taga || tagb || tagc");

消費者將接收包含taga或tagb或tagc的訊息。但是限制是乙個訊息只能有乙個標籤,這對於複雜的場景可能不起作用。在這種情況下,可以使用sql表示式篩選訊息。sql特性可以通過傳送訊息時的屬性來進行計算。在rocketmq定義的語法下,可以實現一些簡單的邏輯。下面是乙個例子:

------------

| message |

|----------| a > 5 and b = 'abc'

| a = 10 | --------------------> gotten

| b = 'abc'|

| c = true |

------------

------------

| message |

|----------| a > 5 and b = 'abc'

| a = 1 | --------------------> missed

| b = 'abc'|

| c = true |

------------

rocketmq只定義了一些基本語法來支援這個特性。你也可以很容易地擴充套件它。

常量支援型別為:

只有使用push模式的消費者才能用使用sql92標準的sql語句,介面如下:

public void subscribe(finalstring topic, final messageselector messageselector)

C DLL匯出的兩種方式和鏈結的兩種方式

第一種 匯出方式 extern c declspec dllexport int plus int x,int y extern c declspec dllexport int sub int x,int y extern c declspec dllexport int mul int x,in...

兩種過載方式

過載的方式 用某次作業題中的實現complex類做例子 1 實現加法 1 complex complex operator const complex c 2 友元函式 complex operator const complex l,const complex r 2 實現 1 complex c...

HTTP FLV的兩種方式

目前,有兩種http flv的實現方式,一種是基於檔案的方式,一種是基於包的方式 兩種http flv的相同之處在於,都是http方式輸出,都是flv 格式 兩種http flv的不同之處在於 1 架構上,乙個 基於包的架構更偏實時,基於包,基於收到包,包。基於檔案的架構,邊寫檔案,邊output給...