消息过滤

不管是在消息发送端设置消息过期时间还是在接收端设置等待时间,都对不满足的消息有过滤的作用,那消息选择器就是为过滤消息而生的,下面来看看消息选择器:

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

results matching ""

    No results matching ""