ActiveMQ提供了一種機制,可根據消息選擇器中的標準來執行消息過濾,只接收符合過濾標準的消息;
生產者可在消息中放入特有的標志,而消費者使用基于這些特定的標志來接收消息
1、發送消息放入特殊標志:
message.setStringProperty(name, value);
2、在創建消息接受者的時候,指定接收消息使用基于特殊標志的消息選擇器
MessageConsumer createConsumer(Destination destination, String messageSelector);
注:消息選擇器是一個字符串,語法與數據庫的SQL相似,相當于SQL語句where條件后面的內容。
案例演示
● 在消息發送者QueueSender類中,發送消息的時候為消息添加標記
//設置消息標記
message.setIntProperty("age",18);
message.setStringProperty("name","Tom");
● 在消息接受者QueueReceiver類中,取消息的時候加消息選擇器過濾消息
//消費者
String messageSelector = "age = 18 and name='Tom'";
messageConsumer = session.createConsumer(destination,messageSelector);