選擇器

功能 > 消費者功能 > 選擇器

JMS 選擇器

選擇器是一種將過濾器附加到訂閱以執行基於內容的路由的方式。 選擇器使用 SQL 92 語法定義,通常應用於訊息標頭;無論是 JMS 訊息上可用的標準屬性,還是您可以透過 JMS 程式碼新增的自訂標頭。

這是一個範例

JMSType = 'car' AND color = 'blue' AND weight > 2500

有關選擇器的詳細說明,請參閱 javax.jmx.Message 上的參考資料。
ActiveMQ Classic 支援一些 JMS 定義的屬性,以及一些 ActiveMQ Classic 的屬性 - 請參閱訊息屬性 - 選擇器可以使用這些屬性。

使用 XPath 過濾訊息

當使用包含 XML 主體的訊息時,Apache ActiveMQ Classic 也支援基於 XPath 的選擇器。 若要使用 XPath 選擇器,請使用以下語法

XPATH '//title\[@lang=''eng''\]'

Xalan 相依性

XPath 支援需要 Xalan,它不是發行版的一部分。 Xalan jar 需要手動新增到 lib 目錄或透過 Maven 拉取到您的應用程式中

<dependency>
    <groupId>xalan</groupId>
    <artifactId>xalan</artifactId>
    <version>2.6.0</version>
</dependency>

字串屬性轉換 / 根據 STOMP 訊息進行選擇

JMS 規範指出,當在選擇器中使用時,字串屬性不應轉換為數值。 因此,舉例來說,如果訊息的「age」屬性設定為字串「21」,則以下選擇器不應與其匹配:「age > 18」。由於 ActiveMQ Classic 支援 STOMP 客戶端,該客戶端只能發送帶有字串屬性的訊息,因此該限制有點限制性。如果您希望 JMS 選擇器自動將字串屬性轉換為適當的數字類型,只需在選擇器前面加上「convert_string_expressions:」即可。如果您將前面範例中的選擇器變更為「convert_string_expressions:age > 18」,則它將與該訊息匹配。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛標誌和 Apache ActiveMQ 專案標誌是 The Apache Software Foundation 的商標。 版權所有 © 2024,The Apache Software Foundation。 根據Apache License 2.0授權。