[英]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.