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.客户化路径分隔符,比如你想要用”/“来替换”.“,配置如下

 <plugins>
      <destinationPathSeparatorPlugin/>
    </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配置实现方式

<destinationInterceptor>
<virtualDestinationInterceptor>
<virtualDestinations>
<compositeQueue name="MY.QUEUE">
<forwardTo>
<queue physicalName="my-queue"/>
<queue physicalName="my-queue2"/>
</forwardTo>
</compositeQueue >
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptor>

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

<destinationInterceptor>
<virtualDestinationInterceptor>
<virtualDestinations>
<compositeQueue name="MY.QUEUE">
<forwardTo>
<filteredDestination selector="odd = 'yes'" queue="FOO"/>
<filteredDestination selector="i =5" queue="BAR"/>
</forwardTo>
</compositeQueue >
</virtualDestinations>
</virtualDestinationInterceptor>
</destinationInterceptor>

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

<networkConnectors>

    <networkConnector uri="static://(tcp://localhost:61716)">
      <excludedDestinations>
        <queue physicalName="Consumer.*.VirtualTopic.>">
      </excludedDestinations>
    </networkConnector>
  </networkConnectors>

3. Configure Startup Destination

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

 <broker xmlns="http://activemq.apache.org/schema/core">

      <destinations>

        <queue physicalName="FOO.BAR"/>

        <topic physicalName="SOME.TOPIC"/>

      </destinations>

    </broker>

4. Delete Inactive Destinations

  1. 概念:

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

 <broker xmlns="http://activemq.apache.org/schema/core"
      schedulePeriodForDestinationPurge="10000">
      <destinationPolicy>
        <policyMap>
          <policyEntries>
            <policyEntry queue=">" gcInactiveDestinations="true" inactiveTimoutBeforeGC="30000"/>
          </policyEntries>
        </policyMap>
      </destinationPolicy>
    </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

  使用示例:

  

queue = new ActiveMQQueue("TEST.QUEUE2?consumer.dispatchAsync=false&consumer.prefetchSize=10");

  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. SpringBoot(十一) Dubbo分布式与Zookeeper

    Dubbo简介 1.Dubbo简介 1. Dubbo是什么? dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上 ...

  2. HTML5中canvas介绍

    1.什么是Canvas canvas 是 HTML5 提供的一个用于展示绘图效果的标签 canvas 提供了一个空白的图形区域,可以使用特定的JavaScript API来绘画图形(canvas 2D ...

  3. Windows2003 安装MVC4 环境的步骤

    一.作为部署服务器的安装步骤 1.服务器上安装SP2 和 IIS6 2.安装.Net Framework3.5 SP1(完整安装包,包含2.0 2.0SP1,237MB那个安装包) 3.安装.Net ...

  4. 阿里logo库

    http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2

  5. 路飞学城Python-Day39(第四模块复习题)

    并发编程 一.简答题 1,简述计算机操作系统的中断的作用 由于cpu本身一次只能执行一个程序,操作系统提供的中断机制使得cpu能够实现不断的在各个程序间进行切换,给人的感觉就是多个程序同时执行 为什么 ...

  6. centos7安装anaconda之后报错:rpm: /home/wyl/anaconda3/lib/liblzma.so.5: version `XZ_5.1.2alpha' not found (required by /lib64/librpmio.so.3)

    1.报错 参考:https://stackoverflow.com/questions/47633870/rpm-lib64-liblzma-so-5-version-xz-5-1-2alpha-no ...

  7. POJ 1988 Cube Stacking( 带权并查集 )*

    POJ 1988 Cube Stacking( 带权并查集 ) 非常棒的一道题!借鉴"找回失去的"博客 链接:传送门 题意: P次查询,每次查询有两种: M x y 将包含x的集合 ...

  8. jpa自定义条件分页查询

    主要依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  9. Vue入门教程(2)

    小白入门学习vue和vue实例,vue总结 这就是我脑海中的 Vue 知识体系: 一句话概况了 Vue 通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件 Vue 的创建 我们的学习目的肯定 ...

  10. JS中的DOM操作怎样添加、移除、移动、复制、创建和查找节点

    DOM操作怎样添加.移除.移动.复制.创建和查找节点? (1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元 ...