上一篇《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新特性的更多相关文章

  1. Redis篇之操作、lettuce客户端、Spring集成以及Spring Boot配置

    Redis篇之操作.lettuce客户端.Spring集成以及Spring Boot配置 目录 一.Redis简介 1.1 数据结构的操作 1.2 重要概念分析 二.Redis客户端 2.1 简介 2 ...

  2. Spring Framework 5 中的新特性

    https://www.ibm.com/developerworks/cn/java/j-whats-new-in-spring-framework-5-theedom/index.html Spri ...

  3. Spring Boot 2.3.0 新特性Redis 拓扑动态感应

    本文为原创文章.欢迎任何形式的转载,但请务必注明出处 冷冷https://lltx.github.io. Spring Boot 2.3 新特性优雅停机详解 Spring Boot 2.3 新特性分层 ...

  4. 一键式Spring集成工具 Spring Boot

    最近公司使用Spring boot进行开发,稍微了解一下,不过自我感觉把集中式配置applicate.properties搞明白,注解用过Spring MVC的boot绝对没问题的 比如拦截器:@As ...

  5. Spring Boot 2.2.0新特性

    Spring Boot 2.2.0 正式发布了,可从 repo.spring.io 或是 Maven Central 获取. 性能提升   Spring Boot 2.2.0 的性能获得了很大的提升. ...

  6. Spring4.1新特性——Spring缓存框架增强(转)

    目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...

  7. Spring4.1新特性——Spring MVC增强

    目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...

  8. Spring Boot 2.0 新特性

    这是一篇总结文章,主要收集 Spring Boot 2.0 相对于 Spring Boot 1.x 的新特性,本章节并不提供实践性质的源代码.在 Spring Boot 系列文章中会持续退出实践章节. ...

  9. Spring Boot 2.3.0正式发布:优雅停机、配置文件位置通配符新特性一览

    当大潮退去,才知道谁在裸泳..关注公众号[BAT的乌托邦]开启专栏式学习,拒绝浅尝辄止.本文 https://www.yourbatman.cn 已收录,里面一并有Spring技术栈.MyBatis. ...

随机推荐

  1. <jsp:include>和<%@include%>的区别

    个人笔记(并非自己总结,而是从别人的博客上看到的) <jsp:include> :动态包含 1.<jsp:include>包含的是html文件 举例: DynamicInclu ...

  2. java 图片质量压缩

    /** * 图片质量压缩 * @param file 要压缩的图片文件 * @param input 文件输入流 * @param quality 压缩质量(0-1) * @author ouyang ...

  3. 或许你不知道的10条SQL技巧(转自58沈剑原创)

    这几天在写索引,想到一些有意思的TIPS,希望大家有收获. 一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and s ...

  4. 浅谈web服务器的编写之http协议

    本书是介绍怎么编写一个Web服务器,而Web服务器是基于HTTP(HyperText Transfer Protocol)协议实现的,所以要实现一个Web服务器就必须了解HTTP协议,本章主要介绍HT ...

  5. elasticsearch REST API方式批量插入数据

    elasticsearch REST API方式批量插入数据 1:ES的服务地址  http://127.0.0.1:9600/_bulk 2:请求的数据体,注意数据的最后一行记得加换行 { &quo ...

  6. MySQL IO线程及相关参数调优

    一.关于一个SQL的简单的工作过程 1.工作前提描述 1.启动MySQL,在内存中分配一个大空间innodb_buffer_pool(其中log_buffer) 2.多用户线程连接MySQL,从内存分 ...

  7. GIT - 代码管理工具之命令集

    GIT 是一个快速.可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问.它会把你的每次提交的文件的全部内容都会记录下来. GIT特点 速度 简单的设计 对非线性开发 ...

  8. (转)maven打包时跳过测试

    1 运行mvn install时跳过Test 1.1 方法一 <project> [...] <build> <plugins> <plugin> &l ...

  9. HTML5 开发APP( 环境配置)

    上一篇我写了关于新建项目,这一篇说一下配置环境我们新建一个移动app后,会发现一个mainifest.json文件,开发app所要配置的环境就在这个文件里 点击打开文件后会有配置界面,在配置界面的下方 ...

  10. zookeeper单机模式安装

    zookeeper单机模式安装 更多文章:http://blogxinxiucan.sh1.newtouch.com/2017/07/26/zookeeper单机模式安装/ 下载zookeeper u ...