Springboot整合RabbitMQ可靠性传输

本文介绍了Springboot与RabbitMQ整合中实现可靠消息传输的方法,包括解决RabbitMQ安装问题、配置生产者和消费者以确保消息的正确投递与消费。生产者通过设置回调机制,利用RabbitTemplate确保消息的幂等性和持久化,消费者配置手动确认和重试机制以保证消息的正确消费。
摘要由CSDN通过智能技术生成

Springboot整合RabbitMQ可靠性传输(分布式事务部分实现方案)

开发环境:rabbitmq-server-3.6.10、otp_win64_19.3(erlang版本);

1.RabbitMQ安装问题

在安装过程中,可能遇到以下问题:

  1. 如果同时安装了activemq和rabbitmq,默认配置下会启动失败,这是由于activemq也同时支持多种协议:tcp、amqp、stomp、mqtt,其中amqp监听的端口和rabbitmq一样(5672),导致冲突,在activemq.xml注释掉即可;
    在这里插入图片描述
  2. 在rabbitmq的sbin目录下,命令行rabbitmqctl status报错nodedown,TCP connection succeed but Erlang distribution failed,解决办法:把C:\Windows下的.erlang.cookie文件同步到Administrator下
  3. 最后rabbitmq-plugins enable rabbitmq_management添加可视化插件,就可以访问管理界面localhost:15672,如果新增了自定义用户,注意查看Can access vitual hosts属性,否则项目启动会报socket closed
    在这里插入图片描述

2.Springboot如何使用RabbitMQ

2.1 生产者配置

  1. 添加依赖
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-amqp</artifactId>
		<version>2.0.3.RELEASE</version>
	</dependency>
  1. application.yml配置
spring:
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest
    publisher-confirms: true
    publisher-returns: true
    template:
      mandatory: true
    cache:
      channel:
        size: 100

其中publisher-confirms和publisher-returns是消息投递到MQ的回调,在代码中配置消息回调后的执行方案,mandatory设置为true表示routingkey找不到exchange绑定的queue就return给生产者,否则直接将消息丢弃。

  1. RabbitTemplate 消息可靠性传递
    利用RabbitTemplate的回调机制,首先为消息设置一个uuid,传入CorrelationData,标志当前消息id,这样可以在消息投递后的回调中拿到这个id,然后把消息存入数据库或redis,性能考虑建议redis,回调时,如果投递成功,则从redis删除消息,如果投递失败,则可以设置定时任务重新投递或人工解决。
        CorrelationData correlationData = new CorrelationData();
        String uuid = UUID.randomUUID().toString();
        correlationData.setId(uuid)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值