![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RabbitMQ
文章平均质量分 75
豆恭梓
在读计算机研究生一枚^_^
展开
-
MQ解决重复消费问题
重复消费一直是行业内重视的问题,在当下的互联网时代,追求的是高效,安全,准确的数据交互。对于大型项目来讲,数据量数以亿计,那么这些数据如何确保安全准确,同时又不失效率的传输是很重要的。目前的服务器数据交互设计,大体上可以是前后端数据交互,Rpc(远程过程调用)或者是通过消息中间件(MQ)来进行的,本次解决方案,我们就从这几个角度出发,讨论如何高效准确的解决企业级重复消费问题。处理重复消费的问题,幂等性是必要理解的,所谓幂等性是指任意多次执行所产生的影响均与一次执行的影响相同。原创 2023-09-04 18:18:45 · 1091 阅读 · 0 评论 -
RabbitMQ-集群简介
RabbitMQ的是基于Erlang语言编写,而Erlang又是一个面向并发的语言,天然支持集群模式。镜像集群虽然支持主从,但主从同步并不是强一致的,某些情况下可能有数据丢失的风险。:是一种主从集群,普通集群的基础上,添加了主从备份功能,提高集群的数据可用性。:是一种分布式集群,将队列分散到集群的各个节点,从而提高整个集群的并发能力。来代替镜像集群,底层采用Raft协议确保主从的数据一致性。注意,这里用address来代替host、port方式。参考课前资料:《RabbitMQ部署指南.md》原创 2023-07-29 19:44:46 · 242 阅读 · 0 评论 -
RabbitMQ-惰性队列
消息堆积问题的解决方案?队列上绑定多个消费者,提高消费速度使用惰性队列,可以再mq中保存更多消息惰性队列的优点有哪些?基于磁盘存储,消息上限高没有间歇性(直接写磁盘 不是先内存再磁盘)的page-out,性能比较稳定惰性队列的缺点有哪些?基于磁盘存储,消息时效性会降低性能受限于磁盘的IO。原创 2023-07-29 14:59:14 · 94 阅读 · 0 评论 -
RabbitMQ-死信交换机-TTL-延迟队列
消息超时的两种方式是?给队列设置ttl属性,进入队列后超过ttl时间的消息变为死信给消息设置ttl属性,队列接收到消息超过ttl时间后变为死信如何实现发送一个消息20秒后消费者才收到消息?给消息的目标队列指定死信交换机将消费者监听的队列绑定到死信交换机发送消息时给消息设置超时时间为20秒延迟队列插件的使用步骤包括哪些?•交换机添加delayed属性为true•发送消息时,添加x-delay头,值为超时时间。原创 2023-07-29 13:24:31 · 169 阅读 · 0 评论 -
RabbitMQ-死信交换机-初识死信交换机
什么是死信?消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false消息是一个过期消息,超时无人消费要投递的队列消息满了,无法投递如果这个包含死信的队列配置了属性,指定了一个交换机,那么队列中的死信就会投递到这个交换机中,而这个交换机称为死信交换机(Dead Letter Exchange,检查DLX)。原创 2023-07-29 13:24:12 · 85 阅读 · 0 评论 -
RabbitMQ消息可靠性之消息持久化、消费者消息确认和消费失败重试机制
如何确保RabbitMQ消息的可靠性?开启生产者确认机制,确保生产者的消息能到达队列开启持久化功能,确保消息未消费前在队列中不会丢失开启消费者确认机制为auto,由spring确认消息处理成功后完成ack开启消费者失败重试机制,并设置MessageRecoverer,多次重试失败后将消息投递到异常交换机,交由人工处理。原创 2023-07-29 13:24:04 · 952 阅读 · 0 评论 -
RabbitMQ消息可靠性之生产者消息确认
每个RabbitTemplate只能配置一个ReturnCallback,因此需要在项目加载时(实现ApplicationContextAware接口)配置:// 获取RabbitTemplate RabbitTemplate rabbitTemplate = applicationContext . getBean(RabbitTemplate . class);原创 2023-07-28 18:03:26 · 160 阅读 · 0 评论 -
RabbitMQ-SpringAMQP-消息转换器
之前说过,Spring会把你发送的消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象。只不过,默认情况下Spring采用的序列化方式是JDK序列化。我们来测试一下。原创 2023-07-28 17:13:56 · 101 阅读 · 0 评论 -
RabbitMQ-SpringAMQP-发布订阅-TopicExchange
描述下Direct交换机与Topic交换机的差异?Topic交换机接收的消息RoutingKey必须是多个单词,以**.**分割Topic交换机与队列绑定时的bindingKey可以指定通配符:代表0个或多个词:代表1个词。原创 2023-07-28 17:02:34 · 94 阅读 · 0 评论 -
RabbitMQ-SpringAMQP-发布订阅-DirectExchange
描述下Direct交换机与Fanout交换机的差异?Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列如果多个队列具有相同的RoutingKey,则与Fanout功能类似基于@RabbitListener注解声明队列和交换机有哪些常见注解?原创 2023-07-28 16:12:10 · 43 阅读 · 0 评论 -
RabbitMQ-SpringAMQP-发布订阅-Fanout Exchange
交换机的作用是什么?接收publisher发送的消息将消息按照规则路由到与之绑定的队列不能缓存消息,路由失败则消息丢失FanoutExchange的会将消息路由到每个绑定的队列声明队列、交换机、绑定关系的Bean是什么?原创 2023-07-28 15:35:34 · 137 阅读 · 0 评论 -
RabbitMQ-SpringAMQP-WorkQueue工作队列
多个消费者绑定到一个队列(防止消息堆积),同一条消息只会被一个消费者处理。通过设置prefetch来控制消费者预取的消息数量。原创 2023-07-28 14:58:38 · 61 阅读 · 0 评论 -
RabbitMQ-SpringAMQP-Basic Queue 简单队列模型
SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。SpringAmqp的官方地址:https://spring.io/projects/spring-amqp。原创 2023-07-28 14:40:55 · 62 阅读 · 0 评论 -
RabbitMQ快速入门
基本消息队列的消息发送流程:建立connection创建channel利用channel声明队列利用channel向队列发送消息基本消息队列的消息接收流程:建立connection创建channel利用channel声明队列定义consumer的消费行为handleDelivery()利用channel将消费者与队列绑定。原创 2023-07-28 11:36:00 · 60 阅读 · 0 评论 -
初识MQ、同步和异步通讯对比 rabbitmq
吞吐量提升:无需等待订阅者处理完成,响应更快速故障隔离:服务没有直接调用,不存在级联失败问题调用间没有阻塞,不会造成无效的资源占用耦合度极低,每个服务都可以灵活插拔,可替换流量削峰:不管发布事件的流量波动多大,都由Broker接收,订阅者可以按照自己的速度去处理事件架构复杂了,业务没有明显的流程线,不好管理需要依赖于Broker的可靠、安全、性能。原创 2023-07-28 10:48:21 · 216 阅读 · 0 评论