1. Wildcards

  1. Wildcards用来支持名字分层体系,它不是JMS规范的一部分,是ActiveMQ的扩展。

    ActiveMQ支持一下三种wildcards:

    1. ".": 用于作为匹配路径上名字间的分隔符

    2. “*": 用于匹配路径上的任何名字(不递归)

    3. ”>“: 用于递归的匹配任何以这个名字开始的destination

  2. 示例:设想你有如下两个destinations

  PRICE.STOCK.NASDAQ.IBM(IBM在NASDAQ的股价)

  PRICE.STOCK.NYSE.SUNW(SUN在纽约证券交易所的股价)

  那么:

    1. PRICE.>:匹配任何产品的价格变动

    2. PRICE.STOCK.>:匹配任何产品的股票价格变动

    3. PRICE.STOCK.NASDAQ.*: 匹配 任何的在NASDAQ下面的产品的股票价格变动

    4. PRICE.STOCK.*.IBM:匹配任何的IBM的产品的股票价格变动

  3.客户化路径分隔符,比如你想要用”/“来替换”.“,配置如下

  1.  <plugins>
  2.       <destinationPathSeparatorPlugin/>
  3.     </plugins>

2. Composite Destinations

  1. 组合队列 Composite Destinations

    组合队列允许用一个虚拟的destination代表多个destinations。这样就可以通过composite destinations在一个操作中同时向多个queue发送消息。

  2. 客户端实现方式

    composite destinations中,多个destination之间采用”,“分割。例如:

    Queue queue = new ActiveMQQueue("FOO.A,FOO.B,FOO.C");

    如果你希望使用不同类型的destination,那么需要加上前缀如:queue://或topic://。例如:

    Queue queue = new ActiveMQQueue("FOO.A,topic://FOO.B,FOO.C");

  3. 在xml配置实现方式

  1. <destinationInterceptor>
  2. <virtualDestinationInterceptor>
  3. <virtualDestinations>
  4. <compositeQueue name="MY.QUEUE">
  5. <forwardTo>
  6. <queue physicalName="my-queue"/>
  7. <queue physicalName="my-queue2"/>
  8. </forwardTo>
  9. </compositeQueue >
  10. </virtualDestinations>
  11. </virtualDestinationInterceptor>
  12. </destinationInterceptor>

  4. 使用filtered destinations,在xml配置实现的方式

  1. <destinationInterceptor>
  2. <virtualDestinationInterceptor>
  3. <virtualDestinations>
  4. <compositeQueue name="MY.QUEUE">
  5. <forwardTo>
  6. <filteredDestination selector="odd = 'yes'" queue="FOO"/>
  7. <filteredDestination selector="i =5" queue="BAR"/>
  8. </forwardTo>
  9. </compositeQueue >
  10. </virtualDestinations>
  11. </virtualDestinationInterceptor>
  12. </destinationInterceptor>

  5. 避免在network连接broker中,出现重复消息配置如下:

  1. <networkConnectors>
  2.  
  3.     <networkConnector uri="static://(tcp://localhost:61716)">
  4.       <excludedDestinations>
  5.         <queue physicalName="Consumer.*.VirtualTopic.>">
  6.       </excludedDestinations>
  7.     </networkConnector>
  8.   </networkConnectors>

3. Configure Startup Destination

  如果需要在ActiveMQ启动的时候,预先创建Destination的话,可以如下配置:  

  1.  <broker xmlns="http://activemq.apache.org/schema/core">
  2.  
  3.       <destinations>
  4.  
  5.         <queue physicalName="FOO.BAR"/>
  6.  
  7.         <topic physicalName="SOME.TOPIC"/>
  8.  
  9.       </destinations>
  10.  
  11.     </broker>

4. Delete Inactive Destinations

  1. 概念:

    一般情况下,ActiveMQ的queue在不使用之后,可以通过web控制台或是JMX方式来删除掉。当然,也可以通过配置,使得broker可以自动探测到无用的队列(一定时间内为空的队列)并删除掉,回收响应资源,可以如下配置

  1.  <broker xmlns="http://activemq.apache.org/schema/core"
  2.       schedulePeriodForDestinationPurge="10000">
  3.       <destinationPolicy>
  4.         <policyMap>
  5.           <policyEntries>
  6.             <policyEntry queue=">" gcInactiveDestinations="true" inactiveTimoutBeforeGC="30000"/>
  7.           </policyEntries>
  8.         </policyMap>
  9.       </destinationPolicy>
  10.     </broker>

  schedulePeriodForDestinationPurge:设置多长时间检查一次,这里是10s,默认是0

  inactiveTimoutBeforeGC:设置当Destination为空后,多长时间被删除,这里是30s,默认是0

  gcInactiveDestinations: 设置删掉不活动的队列,默认为false.

4. Destination Options

  队列选项是给consumer在JMS之外添加的功能特性,通过在队列名称后面使用类似URL的语法添加多个选项。包括:

  consumer.prefetchSize,consumer持有的未确认最大消息数量,默认值variable

  consumer.maximumPendingMessageLimit: 用来控制非持久化的topic在存在慢消费者的情况下,丢弃的数量,默认0

  consumer.noLocal: 默认false

  consumer.dispatchAsync: 是否异步分发,默认true

  consumer.retroactive:是否为回溯消费者,默认false

  consumer.selector:jms的selector,默认null,

  consumer.exclusive:是否为独占消费者,默认false

  consumer.priority:设置消费者的优先级,默认0

  使用示例:

  

  1. queue = new ActiveMQQueue("TEST.QUEUE2?consumer.dispatchAsync=false&consumer.prefetchSize=10");
  2.  
  3.   consumer = session.createConsumer(queue);

ActiveMQ学习笔记(13)----Destination高级特性(一)的更多相关文章

  1. Python 学习笔记 之 02 - 高级特性总结

    切片 语法:  li.[x:y:z]  li为list.tuple等数据类型,x为开始进行切片的位置,y为切片停止的位置(不包含y),z为xy切片后的结果里,每间隔z个元素输出一次结果.  x默认为0 ...

  2. ActiveMQ中的Destination高级特性(一)

    ---------------------------------------------------------------------------------------- Destination ...

  3. 分布式-信息方式-ActiveMQ的Destination高级特性1

    ActiveMQ的Destination高级特性 Destination高级特性----->Composite Destinations 组合队列Composite Destinations : ...

  4. ActiveMQ学习笔记(5)——使用Spring JMS收发消息

      摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...

  5. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  6. Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法

    Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...

  7. SQL反模式学习笔记13 使用索引

    目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引.  索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...

  8. golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换

    golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...

  9. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  10. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

随机推荐

  1. C#操作IIS服务

    进入正题:先从使用角度来讲解IIS操作,然后再深入到具体的IIS服务底层原理. [1]前提掌握要点: (1).IIS到目前经历了四个版本分别为 IIS4.0 IIS5.0 IIS6.0 IIS7.0, ...

  2. 手游服务器端接入google的SDK

    在接入google的SDK之前,当然先要用你的google开发者账号要去申请你接入的应用,这些步骤就直接省略了具体的步骤可以查看这篇博文:http://blog.csdn.net/hjun01/art ...

  3. RocketMQ学习笔记(12)----RocketMQ的Consumer API简介

    由于消息的消费方式有两种,所以两种方式也有不同的API: 1. PushConsumer的配置 1. consumerGroup: 默认值为DEFAULT_CONSUMER,Consumer组名,多个 ...

  4. Kattis -Backspace

    Backspace Bjarki having trouble Shortly before the programming contest started, Bjarki decided to up ...

  5. JS怎样写闰年

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. input上传文件获取文件后缀名+select通过text选中option

    1.input获取后缀名 var fileName = $("input[type='file']").val();//获取上传的文件(单个) var extName = file ...

  7. HDU-2955 Robberies 浮点数01背包 自变量和因变量位置互换

    题目链接:https://cn.vjudge.net/problem/HDU-2955 题意 突然想找几个银行抢钱. 给出各银行的钱数和被抓的概率,以及能容忍的最大被抓概率. 问他最多能抢到多少钱? ...

  8. [luogu1772 ZJOI2006] 物流运输 (最短路 线性dp)

    题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...

  9. CVX安装使用

    CVX下载 下载地址 使用手册 Using Gurobi with CVX Using MOSEK with CVX CVX安装 下载压缩文件后解压缩至任意地址,打开matlab,进入解压缩后的地址, ...

  10. 2019-03-28 SQL Server Pivot

    --现在我们是用PIVOT函数将列[WEEK]的行值转换为列,并使用聚合函数Count(TotalPrice)来统计每一个Week列在转换前有多少行数据,语句如下所示 select * from Sh ...