activemq中的selector

  • Producer.java
  • Consumer.java

activemq消息中间件可以过滤消息,也就是selector,selector遵循sql 92语法。可以使用IN、NOT IN、LIKE等,例如: LIKE ‘12%3’ (‘123’ true,‘12993’ true,‘1234’ false) LIKE ‘l_se’ (‘lose’ true,‘loose’ false) LIKE ‘_%’ ESCAPE ‘’ (’_foo’ true,‘foo’ false)。

selector只会过滤property中的属性,但是这些属性在消费的时候并没有值,是null。

Producer.java

public class Producer {//用户名private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;//密码private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;//urlprivate static final String URL = ActiveMQConnection.DEFAULT_BROKER_URL;private static Connection connection = null;private static Session session = null;public static void main(String[] args) throws JMSException {ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,URL);connection = factory.createConnection();connection.start();session = connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);Queue selector1 = session.createQueue("selector1");MessageProducer producer = session.createProducer(selector1);MapMessage message1 = session.createMapMessage();message1.setString("name","张1");message1.setIntProperty("age",23);//selector只能过滤property中的字段,但是这些字段消费的时候是没有的message1.setStringProperty("gender","男");MapMessage message2 = session.createMapMessage();message2.setString("name","张2");message2.setIntProperty("age",33);message2.setStringProperty("gender","女");MapMessage message3 = session.createMapMessage();message3.setString("name","张3");message3.setIntProperty("age",43);message3.setStringProperty("gender","男");MapMessage message4 = session.createMapMessage();message4.setString("name","张4");message4.setIntProperty("age",53);message4.setStringProperty("gender","女");producer.send(message1);producer.send(message2);producer.send(message3);producer.send(message4);connection.close();}

Consumer.java

public class Consumer {//用户名private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;//密码private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;//urlprivate static final String URL = ActiveMQConnection.DEFAULT_BROKER_URL;private static String SELECTOR_MAN = "gender = '男'";private static String SELECTOR_AGE = "age > 30";private static String SELECTOR_MAN_AGE = "age > 30 and gender = '男'";private static Connection connection = null;private static Session session = null;public static void main(String[] args) throws Exception {ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,URL);connection = factory.createConnection();connection.start();session = connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);Queue selector1 = session.createQueue("selector1");MessageConsumer consumer = session.createConsumer(selector1,SELECTOR_MAN_AGE);consumer.setMessageListener(new MessageListener() {@Overridepublic void onMessage(Message message) {System.out.println("收到消息");if(message instanceof MapMessage){MapMessage m = (MapMessage) message;System.out.println(m.toString());try {System.out.println(m.getString("name"));//System.out.println(m.getString("age"));//System.out.println(m.getString("gender"));m.acknowledge();} catch (JMSException e) {e.printStackTrace();}}}});}
}

注意

Selectors表达式中的日期和时间需要使用标准的long型毫秒值,表达式中的属性不会自动进行类型转换

message1.seStringProperty("age","23“)
"age > 1" 求值结果是false。

activemq中的selector相关推荐

  1. activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...

    ActiveMQ安装 1. 下载资源 ActiveMQ官网: 版本说明 ActiveMQ5.10.x以上版本必须使用JDK1.8才能正常使用. ActiveMQ5.9.x及以下版本使用JDK1.7即可 ...

  2. Android中的Selector的用法

    Android中的Selector主要是用来改变ListView和Button控件的默认背景.其使用方法可以按一下步骤来设计: (以在mylist_view.xml为例) 1.创建mylist_vie ...

  3. epoll 浅析以及 nio 中的 Selector

    转载自 epoll 浅析以及 nio 中的 Selector 首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference): 首先我们来定义流的概念, ...

  4. Apache ActiveMQ中的消息级别授权

    尽管上一篇文章介绍了"代理级身份验证",但该博文是关于消息级更严格的授权的. 我在现实生活中的项目中并没有这么精细的授权,但是我想自己做,并为读者提供一个教程,以扩展他们对Acti ...

  5. ActiveMQ中的温度,存储和内存使用百分比

    为了有效使用ActiveMQ,了解ActiveMQ如何管理内存和磁盘资源以处理非持久性消息和持久性消息非常重要. ActiveMQ具有三个关键参数,需要对其进行检查. 临时使用百分比 这是已用于假脱机 ...

  6. epoll浅析以及nio中的Selector

    出处: https://my.oschina.net/hosee/blog/730598 首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference) ...

  7. ActiveMQ中消费者是如何接收消息的(二)

    上篇文章大致讲述了同步消费者和异步消费者接收消息的异同(详见<ActiveMQ中消费者是如何接收消息的(一)>http://manzhizhen.iteye.com/blog/209413 ...

  8. ActiveMQ中Consumer特性详解与优化

    前言 从本文中你可以了解到如下内容: 1) consumer端消息消费的模型,session的运作机制 2) 如果提升broker和consumer端消息消费的速率 3) selector,group ...

  9. 静态库调用中“unrecognized selector sent to instance”错误

    在开发调用静态库的中,出现 "unrecognized selector sent to instance 0x2b5f90"的错误 -[__NSCFConstantString ...

最新文章

  1. 记录一下集成修改触发模式的过程
  2. Redis - 事务
  3. 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!
  4. gb50268-2008给水排水管道施工及验收规范_20135城市非开挖管道施工质量检查与验收(夯管·定向钻·顶管)...
  5. big sur删除snapshot_法国Labarthe-Sur-Lèze公立中学 | LCR Architectes
  6. JSON.parse和JSON.stringify方法
  7. 渝粤教育 陕西师范大学 《JAVA程序设计》作业
  8. 华为设备初始用户名/密码
  9. 服务器显示RL011,台达伺服驱动器维修之AL011故障原因和方法
  10. VMWare 装mac os x 一个必备优化神器 beamoff
  11. x80hd装linux,平板垃圾佬 篇五:台电也能打十个!x80hd双系统8寸的身体2G+32G的心胸~...
  12. 2021-08-20红外额温枪方案核心芯片ZHW3548
  13. 说一下HashMap的实现原理?
  14. Postman中请求体提交方式
  15. uoj #213.【UNR #1】争夺圣杯 单调栈
  16. 2020数学建模参加后感想
  17. 华为路由器连接小米电视无法联网问题
  18. odoo中的inherit模型属性继承及模型关系
  19. 程序媛眼中的程序员,piupiu~
  20. JDO及相关资源介绍

热门文章

  1. 【Pytorch学习笔记】3.深度学习基础
  2. Java过滤器Filter使用详解
  3. CSS媒体查询详细解读
  4. eclipse 操作的小实用技巧
  5. 腾讯云centOS7服务器 防火墙及端口常用命令
  6. 海店湾养生专家今日推荐:红豆薏米快速减肥法!
  7. Privoxy代理配置
  8. ios7 的psd下载
  9. 那些JAVA常用的运算符
  10. springcloud steam + rabbitmq