
RibbitMQ
文章平均质量分 96
RibbitMQ
默语∿
「2024 优快云博客之星TOP5 | 全栈技术专家深耕Java/Python与AI | 多平台认证讲师 | 原创技术传播者(2000万+阅读) | 北京开发者社区主理人 | 商务合作@Solitudemind | 全网IP:默语」
展开
-
RocketMQ详细介绍
基本介绍特点 (消费者是多线程的默认20个 )优势组件 (默认创建的 topic 是4个 分区)顺序类型消息消费模式消息顺序 (默认使用的是并行消费)仅保证消息至少消费一次,即可能造成消息的重复消费,需要从业务上解决消息的幂等性。无序消息全局顺序局部顺序RocketMq 顺序消息消息投递(消费)策略生产者投递策略消费者分配队列(消息消费模式)Rredis MQ 消息保障生产者保障消息发送保障发送状态重试机制禁止自动创建topic发送端规避消费者保障幂等性消息消费模式消息确认机制消息重试机制死信队列高级特性。原创 2024-11-12 08:00:00 · 17876 阅读 · 1 评论 -
Ribbon负载均衡的简单学习认识
学习目标:Ribbon是一个基于HTTP和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的。它不像Spring Cloud 服务注册中心、配置中心、API网关那样独立部署,但是它几乎存在于每个Spring Cloud微服务中。包括eign提供的声明式服务调用也是基于该 Ribbon实现的。Ribbon 默认提供很多种负载均衡算法,例如轮询、随机等等。甚至包含自定义的负载均衡算法。Ribbon提供了—套微服务的负载均衡解决方案。(Nignx 同理)集中式负或均衡T(服务器负载均衡),即原创 2022-07-12 17:48:18 · 215 阅读 · 0 评论 -
RibbitMQ学习笔记之交换机实战
Fanout 这种类型非常简单。正如从名称中猜到的那样,它是将接收到的所有消息广播到它知道的所有队列中。系统中默认有些 exchange 类型上一节中的我们的日志系统将所有消息广播给所有消费者,对此我们想做一些改变,例如我们希望将日志消息写入磁盘的程序仅接收严重错误(errros),而不存储哪些警告(warning)或信息(info)日志消息避免浪费磁盘空间。原创 2022-10-19 00:36:15 · 252 阅读 · 0 评论 -
RibbitMQ学习笔记之MQ 的相关概念
从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message (消息)而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。: 翻译为消息队列,通过典型的生产者和消费者模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。原创 2022-10-19 00:00:03 · 500 阅读 · 0 评论 -
RibbitMQ学习笔记之MQ练习
在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代表使用者保留的消息缓冲区。原创 2022-10-19 00:19:16 · 384 阅读 · 0 评论 -
RibbitMQ学习笔记之MQ发布确认
confirm 模式最大的好处在于他是异步的,一旦发布一条消息,生产者应用程序就可以在等信道返回确认的同时继续发送下一条消息,当消息最终得到确认之后,生产者应用便可以通过回调方法来处理该确认消息,如果 RabbitMQ 因为自身内部错误导致消息丢失,就会发送一条 nack 消息,生产者应用程序同样可以在回调方法中处理该 nack 消息。这种确认方式有一个最大的缺点就是:发布速度特别的慢,因为如果没有确认发布的消息就会阻塞所有后续消息的发布,这种方式最多提供每秒不超过数百条发布消息的吞吐量。原创 2022-10-19 00:24:34 · 502 阅读 · 0 评论 -
RibbitMQ学习笔记之死信队列
死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。原创 2022-10-19 00:43:08 · 503 阅读 · 0 评论 -
RibbitMQ学习笔记延迟队列
延时队列在需要延时处理的场景下非常有用,使用 RabbitMQ 来实现延时队列可以很好的利用 RabbitMQ 的特性,如:消息可靠发送、消息可靠投递、死信队列来保障消息至少被消费一次以及未被正确处理的消息不会被丢弃。另外,通过 RabbitMQ 集群的特性,可以很好的解决单点故障问题,不会因为单个节点挂掉导致延时队列不可用或者消息丢失。当然,延时队列还有很多其它选择,比如利用 Java 的 DelayQueue,利用 Redis 的 zset,利用 Quartz。原创 2022-10-19 00:54:47 · 458 阅读 · 0 评论 -
RibbitMQ学习笔记之发布确认高级
可以看到,发送了两条消息,第一条消息的 RoutingKey 为 “key1”,第二条消息的 RoutingKey 为"key2",两条消息都成功被交换机接收,也收到了交换机的确认回调,但消费者只收到了一条消息,因为第二条消息的 RoutingKey 与队列的 BindingKey 不一致,也没有其它队列能接收这个消息,所有第二条消息被直接丢弃了。,这样就能把所有消息都投递到与其绑定的队列中,然后我们在备份交换机下绑定一个队列,这样所有那些原交换机无法被路由的消息,就会都进入这个队列了。原创 2022-10-19 01:00:41 · 276 阅读 · 0 评论 -
RibbitMQ学习笔记之 RabbitMQ 其他知识点扩展
举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。消费者在消费 MQ 中的消息时,MQ 已把消息发送给消费者,消费者在给MQ 返回 ack 时网络中断,故 MQ 未收到确认信息,该条消息会重新发给其他的消费者,或者在网络重连后再次发送给该消费者,但实际上该消费者已成功消费了该条消息,造成消费者消费了重复的消息。当消费者由于各种各样的原因(原创 2022-10-19 01:05:05 · 352 阅读 · 0 评论 -
RibbitMQ学习笔记之RabbitMQ 集群
此时又有个在深圳的业务(Client 深圳)需要向 exchangeA 发送消息, 那么(Client 深圳) (broker 北京)之间有很大的网络延迟,(Client 深圳) 将发送消息至 exchangeA 会经历一定的延迟,尤其是在开启了 publisherconfirm 机制或者事务机制的情况下,(Client 深圳) 会等待很长的延迟时间来接收(broker 北京)的确认信息,进而必然造成这条发送线程的性能降低,甚至造成一定程度上的阻塞。说明队列里面的消息被镜像队列传递到相应机器里面了。原创 2022-10-19 01:22:31 · 536 阅读 · 1 评论