概述


这是关于JmsTemplate的最后一篇总结,且只会介绍几个比较重要的特性。

消息的递送模式


在发送消息给时,可以告知这是持久化的消息,还是非持久化的消息。如果是非持久化的消息,broker会将消息保留在内存,否则就会持久化到磁盘。非持久化:高吞吐,易丢失;持久化:低吞吐,不易丢失。
相关的API:
Class org.springframework.jms.core.JmsTemplate
  • public void setDeliveryMode(int deliveryMode)
    设置是否持久化要发送的消息:1-非持久化;2-持久化
  • public int getDeliveryMode()
    获取持久化模式的设置:1-非持久化;2-持久化
  • public void setDeliveryPersistent(boolean deliveryPersistent)
    设置是否持久化要发送的消息,true-持久化;false-非持久化

消息的优先级


在发送时,可以为消息指定优先级,以期高优先级的消息能更快的递送给consumer。在javax.jms.Message#getJMSPriority()方法,有如下的说明:
JMS API为消息定义了10个优先级,0最低,9最高。0-4作为一般的优先级,5-9作为加速优先级。JMS API不要求实现者能够严格按照消息的优先级的顺序把消息递送给consumer,但是应该尽量的实现加速优先级的消息能在一般优先级的消息的前面,递送给consumer。
下面是JmsTemplate中的API:
Class org.springframework.jms.core.JmsTemplate
  • public void setPriority(int priority)
    为将要发送的消息设置优先级。
  • public int getPriority()
    获取优先级

消息的存活时间


在发送时,可以设置消息的存活时间,默认为永久有效。
Class org.springframework.jms.core.JmsTemplate
  • public void setTimeToLive(long timeToLive)
    设置消息的存活时间,毫秒单位
  • public long getTimeToLive()
    获取消息的存活时间,毫秒单位

服务质量开关


如果不打开服务质量的开关,消息的递送模式、优先级和存活时间的设置就没有作用。
Class org.springframework.jms.core.JmsTemplate
  • public void setExplicitQosEnabled(boolean explicitQosEnabled)
    发送消息的时候,是否使用QOS的值(deliveryMode, priority, timeToLive)
  • public boolean isExplicitQosEnabled()
    如果是true,deliveryMode, priority, 和 timeToLive的值将被使用;否则使用默认的值。

P.S.

在JMS API中,消息的递送模式、优先级和存活时间可以在发送的时候统一设置:
  • javax.jms.MessageProducer#send(Message message, int deliveryMode, int priority, long timeToLive):void

接收等待时间


JmsTemplate的接收是阻塞式的接收,默认会一直阻塞等待,直到接收到了消息。也可以设置一个最长的等待时间参数,超过这个时间,接收的方法将得到null的结果。
Class org.springframework.jms.core.JmsTemplate
  • public void setReceiveTimeout(long receiveTimeout)
    设置接收等待时间,毫秒单位
  • public long getReceiveTimeout()
    获取接收等待时间,毫秒单位

AMQ学习笔记 - 12. Spring-JmsTemplate特性设置的更多相关文章

  1. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

  2. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

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

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

  4. Spring学习1:Spring基本特性

    http://longliqiang88.github.io/2015/08/14/Spring%E5%AD%A6%E4%B9%A01%EF%BC%9ASpring%E5%9F%BA%E6%9C%AC ...

  5. SQL反模式学习笔记12 存储图片或其他多媒体大文件

    目标:存储图片或其他多媒体大文件 反模式:图片存储在数据库外的文件系统中,数据库表中存储文件的对应的路径和名称. 缺点:     1.文件不支持Delete操作.使用SQL语句删除一条记录时,对应的文 ...

  6. Spring实战第八章学习笔记————使用Spring Web Flow

    Spring实战第八章学习笔记----使用Spring Web Flow Spring Web Flow是一个Web框架,它适用于元素按规定流程运行的程序. 其实我们可以使用任何WEB框架写流程化的应 ...

  7. Spring实战第五章学习笔记————构建Spring Web应用程序

    Spring实战第五章学习笔记----构建Spring Web应用程序 Spring MVC基于模型-视图-控制器(Model-View-Controller)模式实现,它能够构建像Spring框架那 ...

  8. matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size

    一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...

  9. SpringMVC:学习笔记(12)——ThreadLocal实现会话共享

    SpringMVC:学习笔记(12)——ThreadLocal实现会话共享 ThreadLocal ThreadLocal,被称为线程局部变量.在并发编程的情况下,使用ThreadLocal创建的变量 ...

随机推荐

  1. ntoskrnl.exe损坏或丢失的解决方式

    同事的电脑启动时出现下面提示:"因下面文件损坏或丢失Windows无法启动 %systemroot%\system32\ntoskrnl.exe,请又一次安装以上文件的拷贝"(Wi ...

  2. nested exception is java.io.FileNotFoundException: class path resource [spring/spring-datasource-mog

    spring单元測试时发现的问题: org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsin ...

  3. 构建移动Web应用程序的技术堆栈

    编写web应用程序时,有很多的技术决策.笔者最近回来编写现代Web应用程序,并希望总结一些曾经在开发周期过程中做了记录零散的想法.这篇文章是关于一套对笔者最近开发的项目有帮助的框架.笔者重温了一些最重 ...

  4. j2ee项目后置类代码实现跳出iframe页面跳转

    response.getWriter().write("<script>top.location.href='../admin/login';</script>&qu ...

  5. 查询记录时rs.previous()的使用

    查询记录时rs.previous()的使用 假如查询一个数据表,假设没有记录就显示提示信息,有就所有显示出来查询结果.这时假设是有查询结果的话就须要进行两次查询,第一次查完记录指针指向最后一条记录,開 ...

  6. Android中如何实现多行、水平滚动的分页的Gridview?

    功能要求: (1)比如每页显示2X2,总共2XN,每个item显示图片+文字(点击有链接). 如果单行水平滚动,可以用Horizontalscrollview实现. 如果是多行水平滚动,则结合Grid ...

  7. Java再学习——栈(stack)和堆(heap)

    一.内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们 ...

  8. 关于yarn的spark配置属性

    spark1.2.0 These are configs that are specific to Spark on YARN Property Name Default Meaning  spark ...

  9. Android-ViewPagerIndicator框架使用——TabPageIndicator以及样式的修改

    今天介绍一个常用的框架,一般app都会用到这样的框架,下面就来介绍框架的使用以及样式的修改,那就以我自己写的例子来向大家介绍吧! 首先给出xml ,在相应窗口的布局文件中引入TabPageIndica ...

  10. 自定义 404 与 500 错误页面,URL 地址不会重定向(一)

    对于 404 与 500 错误发生时,我们希望自己定义一个更加人性化的页面. 例子 当访问下面这个地址时: http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg ...