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);