栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合RabbitMQ--重试/消息序列化--方法/实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合RabbitMQ--重试/消息序列化--方法/实例

原文网址:SpringBoot整合RabbitMQ--重试/消息序列化--方法/实例_IT利刃出鞘的博客-CSDN博客

简介

        本文用示例介绍SpringBoot整合RabbitMQ时如何进行重试,如何进行消息的序列化。

重试

简介

        默认情况下,如果消费者程序出现异常情况, Rabbitmq 会自动实现补偿机制(也就是重试机制)。

        @RabbitListener底层使用AOP进行拦截,如果程序没有抛出异常,自动提交事务。 如果Aop使用异常通知拦截获取异常信息的话 , 自动实现补偿机制,该消息会一直缓存在Rabbitmq服务器端进行重放,一直重试到不抛出异常为准。

一般来说默认5s重试一次,可以修改重试策略,消费者配置(重试5次,不行就放弃):

listener:
  simple:
	retry:
	# 开启消费者重试(默认开启)
	enabled: true
	# 最大重试次数(默认无数次)
	max-attempts: 5
	# 重试间隔次数
	initial-interval: 3000
MessageConvert 简介
  1. RabbitMQ 的序列化是指 Message 的 body 属性,即我们真正需要传输的内容,RabbitMQ 抽象出一个 MessageConvert 接口处理消息的序列化,其实现有 SimpleMessageConverter(默认)、Jackson2JsonMessageConverter 等。
  2. 当调用了 convertAndSend 方法时会使用 MessageConvert 进行消息的序列化。
  3. SimpleMessageConverter 对于要发送的消息体 body 为 byte[] 时不进行处理;若是 String 则转成字节数组;若是 Java 对象,则使用 jdk 序列化将消息转成字节数组,转出来的结果较大,含class类名,类相应方法等信息。因此性能较差。
  4. 当使用 RabbitMQ 作为中间件时,数据量比较大,此时就要考虑使用类似 Jackson2JsonMessageConverter 等序列化形式以此提高性能。当然,也可以发送端手动将数据转为JSON格式,接收端序列化为指定对象。
使用 JSON 序列化与反序列化

        RabbitMQ 提供了 Jackson2JsonMessageConverter 来支持消息内容 JSON 序列化与反序列化。被序列化对象应提供一个无参的构造函数,否则会抛出异常。

消息发送者:设置 MessageConverter 为 Jackson2JsonMessageConverter:

rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());

消息消费者:配置 MessageConverter 为 Jackson2JsonMessageConverter:

@Configuration
public class RabbitMQConfig {
    @Bean
    public RabbitListenerContainerFactory rabbitListenerContainerFactory(
              ConnectionFactory connectionFactory){
        SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
        factory.setConnectionFactory(connectionFactory);
        factory.setMessageConverter(new Jackson2JsonMessageConverter());
        return factory;
    }
}
自定义序列化

待补充

其他网址

RabbitMQ:@RabbitListener 与 @RabbitHandler 及 消息序列化 - 简书

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/943219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号