概述


消息选择器使用类似于SQL语法,为Consumer指定基于Message属性的筛选条件。

消息选择器


发送的时候,给消息添加一些属性;在接收的时候,根据属性进行过滤。

API

javax.jms.Message提供了一系列的方法,用于设置属性:
  • setIntProperty(String name, int value):void
    设置int类型的属性
  • setStringProperty(String name, String value):void
    设置字符串类型的属性
  • setObjectProperty(String name, Object value):void
    设置对象类型的属性
除此之外,还有设置boolean、byte、short、long、float、double类型的API,模式相同。
 
javax.jms.Session则提供了在创建MessageConsumer时指定选择器的方法:
  • createConsumer(Destination destination, String messageSelector):MessageConsumer
    为指定的destination创建一个consumer。只有当消息的属性满足选择器的表达式时,才会被接收;选择器为null或者空字符串时,表示没有选择器。
 
在发送的时候为消息指定属性,在接收的时候为Consumer指定选择器。

选择器语法

选择器是字符串类型,官方文档说,选择器的语法类似于SQL的语法。以下仅对int、String类型举例:
 // 假如有int类型的属性order,而我们接收order>10的消息
String messageSelector = "order > 10"; // 假如有String类型的属性kind,而我们接收kind="06"的消息
String messageSelector = "kind='06'";

至于其他类型,多个属性是否支持逻辑运算等,就留在以后需要的时候再尝试吧。

核心代码

发送消息
 final int NUM = 3;
List<Message> result = new ArrayList<Message>(NUM);
try {
for (int i = 0; i < NUM; i++) {
TextMessage message = session.createTextMessage();
message.setText(String.format("This is the %dth message.",
i + 1));
message.setIntProperty("order", i + 1);
result.add(message);
}
} catch (JMSException e) {
e.printStackTrace();
return null;
}
return result; 
接收消息
String messageSelector = "order > 1";
consumer = session.createConsumer(destination, messageSelector); 

AMQ学习笔记 - 04. 消息选择器的更多相关文章

  1. AMQ学习笔记 - 03. 消息的接收方式

    概述 消息有两种接收方式:同步接收和异步接收. 同步接收:主线程阻塞式等待下一个消息的到来,可以设置timeout,超时则返回null. 异步接收:主线程设置MessageListener,然后继续做 ...

  2. AMQ学习笔记 - 07. 持久性订阅

    概述 一般的订阅,订阅者必须时刻处于活跃状态,才不会遗漏任何信息:持久性订阅,当订阅者处于非活动状态时,代理会为它们保留信息,下一次连接之后推送给它们. 持久订阅 与一般的定于相比,持久性订阅需要: ...

  3. AMQ学习笔记 - 09. Spring-JmsTemplate之接收

    概要 JmsTemplate提供了4组*3,共计12个接收用的方法.   JmsTemplate接收所需要的资源ConnectionFactory和Destination,和发送是一致的.   接收的 ...

  4. Linux进程间通信IPC学习笔记之消息队列(SVR4)

    Linux进程间通信IPC学习笔记之消息队列(SVR4)

  5. 机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes)

    机器学习实战(Machine Learning in Action)学习笔记————04.朴素贝叶斯分类(bayes) 关键字:朴素贝叶斯.python.源码解析作者:米仓山下时间:2018-10-2 ...

  6. SaToken学习笔记-04

    SaToken学习笔记-04 如果有问题,请点击:传送门 角色认证 在sa-token中,角色和权限可以独立验证 // 当前账号是否含有指定角色标识, 返回true或false StpUtil.has ...

  7. Redis:学习笔记-04

    Redis:学习笔记-04 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 10. Redis主从复制 1 ...

  8. jQuery学习笔记(一)jQuery选择器

    目录 jQuery选择器的优点 基本选择器 层次选择器 过滤选择器 表单选择器 第一次写博客,希望自己能够长期坚持,以写博客的方式作为总结与复习. 最近一段时间开始学习jQuery,通过写一个jQue ...

  9. AMQ学习笔记 - 05. 客户端模板化

    概述 客户端编程模型中,大部分的步骤都是相同的.将相同的部分做成模板,将不同的部分预留接口,实现者就只需要针对不同的部分提供实现. 设计 类图 发送方客户端 说明: 基于模板的思想,SendTempl ...

随机推荐

  1. BZOJ4424/CF19E Fairy(dfs树+树上差分)

    即删除一条边使图中不存在奇环.如果本身就是个二分图当然任意一条边都可以,先check一下.否则肯定要删除在所有奇环的交上的边. 考虑怎么找这些边.跑一遍dfs造出dfs树,找出返祖边构成的奇环.可以通 ...

  2. 你试过不用if写代码吗?

    我在教新手编程时,喜欢给他们一些小小的挑战,比如:不使用if语句(或者三元运算符.switch语句等)解决一些编程问题.这样做有什么意义吗?事实上,它可以迫使你从不同的角度寻找解决方法,也许可以找到更 ...

  3. Ubuntu下安装LNMP之Mysql的安装及卸载

    Mysql的安装过程也可参考:http://blog.csdn.net/qq_20565303/article/details/69813868 Mysql安装包下载地址:https://dev.my ...

  4. 1040: [ZJOI2008]骑士~基环外向树dp

    Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中 ...

  5. P2764 最小路径覆盖问题

    题目描述 «问题描述: 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶点开 ...

  6. [Evernote]印象笔记使用经验技巧

    一    软件使用      现在使用Windows客户端的印象笔记 + iPhone移动端印象笔记 + chrome浏览器剪藏插件.      在试用了很多云笔记后,还是选择了印象笔记,并且有许多的 ...

  7. PHP等比例生成缩略图

    /** * 生成缩略图 * $imgSrc 图片源路径 * $resize_width 图片宽度 * $resize_height 图片高度 * $dstimg 缩略图路径 * $isCut 是否剪切 ...

  8. kernelchina.org内核研究

    kernelchina.org 内核研究 转自:http://www.kernelchina.org

  9. TortoiseSVN安装使用【转】

    转自:http://www.cnblogs.com/rushoooooo/archive/2011/04/29/2032346.html TortoiseSVN是windows平台下Subversio ...

  10. Shell 脚本实现TCP/UDP协议通讯

    Shell 脚本实现TCP/UDP协议通讯 http://www.cnblogs.com/occult/archive/2012/12/25/2832183.html