Spring集成RabbiMQ-Spring AMQP新特性
上一篇《Spring集成RabbitMQ-使用RabbitMQ更方便》中,我们只需要添加响应jar的依赖,就可以写一个Spring集成RabbitMQ下非常简单收发消息的程序。
我们使用的spring-rabbit的版本是当前官方最新的2.0.0.M5,这篇主要介绍下最新版本的spring amqp相对老版本有哪些新特性和升级。
常规改进
ExchangeBuilder在该版本中默认会创建持久化的exchange,就是我们熟悉的durable属性
@QueueBinding注解中用到的@Exchange也默认是开启持久化的
下面这种场景要细化下,在@RabbitListener注解中使用@Queue,如果创建Queue是有名称的,则默认是持久化的,如果创建的是匿名的Queue(你可以认为是《RabbitMQ入门》中通过“String queueName = channel.queueDeclare().getQueue();”这样的方式创建的),则默认是不会持久化的。
不再使用的类
UniquelyNameQueue这个类将不再被提供使用。删除该类主要考虑的是一般不会出现需要创建一个持久化、不会被自动删除,而且队列名称又是唯一的场景。当然了,删除了该类,我们可以使用下面的这种替代方案new Queue(UUID.randomUUID().toString())
****
新增的类
该版本中新添加了一个监听容器类DirectMessageListenerContainer类,相比之前只有一个SimpleMessageListenerContainer,现在又多了个选择。
有关RabbitTemplate的变化
上篇我们简单提过,RabbitTemplate是用来收发消息的。新版本的变动主要有
在之前的版本中,RabbitTemplate是不支持事务的,但是经常被放在事务中,这是一个明显的bug,所以从版本1.6.2开始,如果你确实需要在事务中使用RabbitTemplate,那么就需要多设置一个channelTransacted变量。
新版本的RabbitTemplate现在默认使用DirectReplyToMessageListenerContainer来处理消息响应,而不是像之前那样为每个请求都创建一个消费者进行消费。注意这个DirectReplyToMessageListenerContainer是DirectMessageListenerContainer的子类。
RabbitTemplate和AsyncRabbitTemplate中的方法receiveAndConvert和convertSendAndReceiveAsType,能够通过设置参数ParameterizedTypeReference来指定返回结果的类型。是不是很灵活、很方便?
监听容器的微小变化
在之前的版本中,当调用方法basicGet比如RabbitMQ.receive()是,我们会通过MessageProperties.getMessageCount()来获取消息数目,如果没有消息的话就是0,在新版本中则返回为null
****
有关重试
MissingMessageIdAdvice这个类已经不再对外提供,转为内置了。
匿名队列的命名
AnonymousQueues现在默认的命名策略由原来的使用UUID改为Base64UrlNamingStrategy。
所有的改变都是为了更好!
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!如果您想持续关注我的文章,请扫描二维码,关注JackieZheng的微信公众号,我会将我的文章推送给您,并和您一起分享我日常阅读过的优质文章。
Spring集成RabbiMQ-Spring AMQP新特性的更多相关文章
- Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置
Redis篇之操作.lettuce客户端.Spring集成以及Spring Boot配置 目录 一.Redis简介 1.1 数据结构的操作 1.2 重要概念分析 二.Redis客户端 2.1 简介 2 ...
- Spring Framework 5 中的新特性
https://www.ibm.com/developerworks/cn/java/j-whats-new-in-spring-framework-5-theedom/index.html Spri ...
- Spring Boot 2.3.0 新特性Redis 拓扑动态感应
本文为原创文章.欢迎任何形式的转载,但请务必注明出处 冷冷https://lltx.github.io. Spring Boot 2.3 新特性优雅停机详解 Spring Boot 2.3 新特性分层 ...
- 一键式Spring集成工具 Spring Boot
最近公司使用Spring boot进行开发,稍微了解一下,不过自我感觉把集中式配置applicate.properties搞明白,注解用过Spring MVC的boot绝对没问题的 比如拦截器:@As ...
- Spring Boot 2.2.0新特性
Spring Boot 2.2.0 正式发布了,可从 repo.spring.io 或是 Maven Central 获取. 性能提升 Spring Boot 2.2.0 的性能获得了很大的提升. ...
- Spring4.1新特性——Spring缓存框架增强(转)
目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...
- Spring4.1新特性——Spring MVC增强
目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...
- Spring Boot 2.0 新特性
这是一篇总结文章,主要收集 Spring Boot 2.0 相对于 Spring Boot 1.x 的新特性,本章节并不提供实践性质的源代码.在 Spring Boot 系列文章中会持续退出实践章节. ...
- Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览
当大潮退去,才知道谁在裸泳..关注公众号[BAT的乌托邦]开启专栏式学习,拒绝浅尝辄止.本文 https://www.yourbatman.cn 已收录,里面一并有Spring技术栈.MyBatis. ...
随机推荐
- 跟我一起读postgresql源码(六)——Executor(查询执行模块之——查询执行策略)
时光荏苒,岁月如梭.楼主已经很久没有更新了.之前说好的一周一更的没有做到.实在是事出有因,没能静下心来好好看代码.当然这不能作为我不更新的理由,时间挤挤还是有的,拖了这么久,该再写点东西了,不然人就怠 ...
- 基于Json序列化和反序列化通用的封装
1. 最近项目已经上线了 ,闲暇了几天 想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了.但是我想封装一套为自己开发的项目使用.方便 ...
- 针对双系统ubuntu16.04卡死及系统没有声音解决方法
楼主电脑系统状况:win10主系统,128固态为ubuntu系统 安装一共为两次. 第一次出现ubuntu安装成功后没有声音,主系统win10有声音,Ubuntu上检测不到声卡,说明ubu ...
- Mac之OS系统下搭建JavaEE环境 <五> 之Mysql数据库的安装及配置
这里将推荐两款 集成的Mysql环境 十分轻便好用,MAMP 和 XAMPP MAMP XAMPP 1.MAMP下载 官网: https://www.mamp.info/en/ 下载安装即可使用 MA ...
- 64位Win10系统安装Mysql5.7.11
最近在装了64位Win10系统的mac book笔记本上用mysql-installer-community-5.7.11.0安装Mysql5.7.11,在配置mysql server时老是卡住,报错 ...
- Adobe系列软件下载地址
在前些上传的文章中已经讲了如何激活Adobe系列软件,在这放上Adobe系列软件下载地址: 1.Adobe After Effects 2017-14.0 32位下载地址: 链接:http://pan ...
- 微信小程序怎么用?线下商家最适合玩小程序
随着微信小程序不断地释放新功能,许多行业越来越关注小程序,目前已经有不少餐饮和线下传统零售企业开始谋划利用好小程序.但是,线下商业有着复杂的场景,如何针对自己行业的特点和需求开发出属于自己的小程序,是 ...
- iOS开发 MVVM+RAC 的使用
好长一段时间没有敲简书了! 主要是因为一直在跑面试. 终于还是在上海入职了! 由于项目原因最终还是入了MVVM+RAC的坑 下面是正题. Demo效果 使用MVVM+RAC请求网络数据 Reactiv ...
- [javascript] visible - 待写
摘要 jquery 有个筛选器 visible , 一般用于选择 可见元素 $('p:visible') 就是选择可见的 p 元素. 但发现有时候不可用.!!
- 使用HTML5 FormData对象实现大文件分块上传(断点上传)功能
FormData是HTML5新增的一个对象,通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对.它可以更灵活方便的发送表单数据,因为可以独立于表单使用.如果你把表单 ...