ActiveMQ学习笔记(13)----Destination高级特性(一)
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高级特性(一)的更多相关文章
- Python 学习笔记 之 02 - 高级特性总结
切片 语法: li.[x:y:z] li为list.tuple等数据类型,x为开始进行切片的位置,y为切片停止的位置(不包含y),z为xy切片后的结果里,每间隔z个元素输出一次结果. x默认为0 ...
- ActiveMQ中的Destination高级特性(一)
---------------------------------------------------------------------------------------- Destination ...
- 分布式-信息方式-ActiveMQ的Destination高级特性1
ActiveMQ的Destination高级特性 Destination高级特性----->Composite Destinations 组合队列Composite Destinations : ...
- ActiveMQ学习笔记(5)——使用Spring JMS收发消息
摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法
Ext.Net学习笔记13:Ext.Net GridPanel Sorter用法 这篇笔记将介绍如何使用Ext.Net GridPanel 中使用Sorter. 默认情况下,Ext.Net GridP ...
- SQL反模式学习笔记13 使用索引
目标:优化性能 改善性能最好的技术就是在数据库中合理地使用索引. 索引也是数据结构,它能使数据库将指定列中的某个值快速定位在相应的行. 反模式:无规划的使用索引 1.不使用索引或索引不足 2.使用了 ...
- golang学习笔记13 Golang 类型转换整理 go语言string、int、int64、float64、complex 互相转换
golang学习笔记13 Golang 类型转换整理 go语言string.int.int64.float64.complex 互相转换 #string到intint,err:=strconv.Ato ...
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...
随机推荐
- Java数据库开发
Nosql数据库使用场景 首先需要确认一个问题,nosql能做什么?在现在的开发领域中nosql可以实现文档存储(BSON.JSON).缓存存储.图像缓存(图像搜索),但是对于nosql的具体应用场景 ...
- (5)pyspark----共享变量
如果想在节点之间共享一份变量,spark提供了两种特定的共享变量,来完成节点之间的变量共享. (1)广播变量(2)累加器 二.广播变量 概念: 广播变量允许程序员缓存一个只读的变量在每台机器上,而不是 ...
- ntp.log日志梳理
[日志]offset 正负 机器A上执行: remote refid st t when poll reach delay offset jitter ======================== ...
- CommonJS 与 ES6 的依赖操作方法(require、import)
CommonJS:http://www.commonjs.org/specs/modules/1.0/ ES2015的 export:https://developer.mozilla.org/en- ...
- 【转】Retina 屏幕下,网页图片的显示兼容
感谢 Apple,带来了 Retina 屏幕的革命,让我们可以在电子显示屏上享受到印刷级的分辨率.由于分辨率的提升,网页中的文字.Flash 和 SVG 内容显示得比原来更加精细,但网页中的图片却变得 ...
- CefSharp的简单应用,制作自动学习视频软件(基于Chromium)
CefSharp在NuGet的简介是“The CefSharp Chromium-based browser component”,机翻的意思就是“基于Cefsharp Chromium的浏览器组件” ...
- BZOJ 3413 匹配 (后缀自动机+线段树合并)
题目大意: 懒得概括了 神题,搞了2个半晚上,还认为自己的是对的...一直调不过,最后终于在jdr神犇的帮助下过了这道题 线段树合并该是这道题最好理解且最好写的做法了,貌似主席树也行?但线段树合并这个 ...
- [转载] C 陷阱与缺陷( C traps and Pitfalls )
本文转自 https://www.xuebuyuan.com/1951579.html 自己找工作过程中复习过的书包括<C traps and Pitfalls>,<编程珠玑> ...
- JAVA 多线程知识总结(一)
一,线程的生命周期以及五种基本状态 关于JAVA线程的生命周期,首先看一下下面这张图 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌握了. Ja ...
- 单元测试Struts2的Action(包含源码)
很久没有从头搭建Struts2的环境了.最近,认真实践了单元测试Struts2.Spring等Java项目. 今天特意写的是单元测试Struts2的Action,遇到了不少问题,果然是实践出真知啊. ...