RabbitMQ 结合业务实现消息确认

唠个嗑

网络上搜罗了多次想知道 RabbitMQ 现实业务种怎么实现消息的可靠性的,但是大多都不太理想,站在各位大佬巨人的肩膀上研究了一段时间,我也整理了一套简单可行性的方案,包括消息异常处理。这篇文章想主要讲一些业务处理方案,项目中加入 RabbitMQ 中间件很简单,但是根据具体业务实现消息的可靠性,这个需要多加考虑。当然下面也会通过测试代码来分析,文末也会附上源码地址。

1、准备

1.1、环境准备

之前博客上写过一篇编译安装的方法 地址,大家可以参考,因为 RabbitMQ 底层语言的原因可能稍微麻烦点,那就没有办法了吗?如果你是先搞测试,再在项目中使用的话,那可以使用 docker 安装,2 行代码,如下

docker pull rabbitmq

docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management

1.2、理论准备

RabbitMQ 的类型包括:direct、topic、fanout、headers、system(翻源码看到的)

这里主要通过 topic 来分析,bindingkey 可以通过通配符 # 和 * 来匹配多个 路由键 (routingKey),
bindingkey 是绑定交换机(exchange)和队列(queue)的, 生产者(publisher)发消息的时候会携带 routingKey、exchange 和 消息发送给 RabbitMQ,
连接成功后实际是组件 exchange 接收了生产者的消息,然后通过 bindingkey 匹配 routingKey,决定送给哪个 queue,每个消费者都会有 queue,所以 queue接收到消息 后就可以确保消费者接可以收到消息了,最后消费者再消费。

再详细的内容可以查看大佬 erlie 的总结 地址

2、消息确认

RabbitMQ 基础配置

pom

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.2.5.RELEASE</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>
	
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

application.yml

spring:
  rabbitmq:
    host: 192.168.1.105
    port: 5672
    username: guest
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值