簡體   English   中英

ActiveMQ 的 PHP stomp 選擇器

[英]PHP stomp selector for ActiveMQ

$topic  = '/topic/orders';
$selector = "orders IN ('1233', '345', '22222')";
$username = 'username'; $pass = 'pass';

$connection = new Connection($brokerUri);
$client = new Client($connection);
$client->setLogin($username, $pass);
$stomp = new StatefulStomp($client);
$stomp->subscribe($topic,$selector);

它將訂閱 ActiveMQ 上的主題,但訂閱將以 convert_string_expressions 為前綴:

請參閱附圖。

在此處輸入圖像描述

如何修復此前綴?

ActiveMQ "Classic" 被硬編碼為 STOMP 客戶端使用的任何選擇器的前綴convert_string_expressions: 這是大約 10 年前通過AMQ-4146完成的。 前綴記錄在這里,其中指出:

JMS 規范規定,在選擇器中使用時不應將 String 屬性轉換為數字。 例如,如果一條消息的“年齡”屬性設置為字符串“21”,則以下選擇器不應匹配它:“年齡 > 18”。 由於 ActiveMQ 支持只能發送具有字符串屬性的消息的 STOMP 客戶端,因此該限制有點限制。 如果您希望 JMS 選擇器自動將字符串屬性轉換為適當的數字類型,只需在選擇器前面加上“convert_string_expressions:”即可。 如果您將前面示例中的選擇器更改為“convert_string_expressions:age > 18”,那么它將匹配消息。

要“修復”這個問題,您必須向 ActiveMQ 項目提交一個 PR,該項目為 STOMP 連接器添加一個新的配置參數,以使此行為可配置。 也就是說,應該沒有理由改變它,因為它不應該傷害任何東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM