消息过滤
不管是在消息发送端设置消息过期时间还是在接收端设置等待时间,都对不满足的消息有过滤的作用,那消息选择器就是为过滤消息而生的,下面来看看消息选择器:
Primeton MQ提供了一种机制,使用它消息服务可根据消息选择器中的标准来执行消息过滤。生产者可在消息中放入应用程序特有的属性,而消费者可使用基于这些属性的选择标准来表明对消息是否感兴趣。这就简化了客户端的工作,并避免了向不需要这些消息的消费者传送消息的开销。然而,它也使得处理选择标准的消息服务增加了一些额外开销。 消息选择器是消息消费者(MessageConsumer)的过滤器,可以用来过滤传入消息的属性和消息头部分(但不过滤消息体),并确定是否将实际消费该消息。可以将消息选择器作为消息消费者(MessageConsumer) 创建的一部分。
消息生产者(Producer):
MapMessage msg1 = this.session.createMapMessage();
msg1.setString("name", "张三");
msg1.setInt("age", 20);
// 设置用于消息过滤器的条件
msg1.setStringProperty("name", "张三");
msg1.setIntProperty("age", 20);
msg1.setStringProperty("color", "bule");
MapMessage msg2 = this.session.createMapMessage();
msg2.setString("name", "李四");
msg2.setInt("age", 25);
// 设置用于消息过滤器的条件
msg2.setStringProperty("name", "李四");
msg2.setIntProperty("age", 25);
msg2.setStringProperty("color", "white");
消息消费者(Consumer):
// 消息选择器
String SELECTOR = "age > 25";
// 在构造消费者的时候,指定了 消息选择器
// 有选择性的消费消息
MessageConsumer consumer = session.createConsumer(destination,SELECTOR);