JAVA开发+消息中间件+MQ
文章平均质量分 70
MQ知识
冰冰很社恐
学无止境
展开
-
分布式设计原理——CAP原则
总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统事务的ACID特性使相反的,它完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。对复杂的SQL查询,特别是多表关联查询的需求 —— 任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。与此同时,与进程A无因果关系的进程C的数据访问则没有这样的限制。原创 2024-08-27 10:17:10 · 1260 阅读 · 0 评论 -
SpringBoot整合RabbitMQ
在或。原创 2024-04-09 16:31:18 · 438 阅读 · 0 评论 -
MQ中的交换机与队列
首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。原创 2024-04-09 11:43:30 · 966 阅读 · 0 评论 -
RabbitMQ的应答模式
RabbitMQ 中的消息应答模式主要包括两种:自动应答(Automatic Acknowledgement)和手动应答(Manual Acknowledgement)。不在乎消费者对消息处理是否成功,都会告诉队列删除消息。如果处理消息失败,实现自动补偿(队列投递过去 重新处理)。在手动应答模式下,消费者在接收到消息后并不会立即向RabbitMQ确认消息已处理完毕。消费者需要显式调用basicAck方法来确认消息处理完成,RabbitMQ只有在接收到消费者的确认后才会将消息从队列中删除。原创 2024-04-10 08:35:16 · 437 阅读 · 0 评论 -
基于docker安装的rocketMQ以及springboot集成使用
RocketMQ支持指定级别的延迟消息,即只能设置预设的几个时间等级的延迟,而不是任意时间延迟。目前RocketMQ社区版并不支持任意时间的精确延迟,RocketMQ在4.x版本只能够支持18种内置的延迟消息(1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h),具体实现方式是在发送消息时设置消息的延迟等级。原创 2024-04-14 15:21:01 · 393 阅读 · 0 评论 -
MQ死信队列
在 RabbitMQ 中充当主角的就是消息,在不同场景下,消息会有不同地表现。1. 消息被拒绝访问,即 RabbitMQ返回 basicNack 的信号时 或者拒绝basicReject2. 消费者发生异常,超过重试次数。其实spring框架调用的就是 basicNack3. 消息的Expiration 过期时长或队列TTL过期时间。4. 消息队列达到最大容量上述场景经常产生死信,即消息在这些场景中时,被称为死信。原创 2024-04-10 17:33:23 · 648 阅读 · 0 评论 -
RabbitMQ中如何解决消息堆积问题
对于无法立即处理或处理失败的消息,可以配置死信交换器和队列,当消息达到一定重试次数或者超过一定期限未被成功ACK时,消息将被转发到死信队列中,后续可以单独处理这部分消息,避免阻塞正常的消息流。当然,更重要的是理解业务需求和消息处理的规律,制定合理的架构和策略。: 对于不在活跃节点上的消息,可以启用惰性队列,这样在消费者请求消息时,消息才会从磁盘加载到内存中,一定程度上减轻内存压力。: 对于不同优先级的消息,可以配置优先级队列,确保高优先级的消息优先被处理,降低低优先级消息对系统造成的压力。原创 2024-04-13 08:34:10 · 2160 阅读 · 0 评论 -
消息队列MQ的介绍和docker安装MQ
MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的。多用于分布式系统之间进行通信,原创 2024-04-09 08:36:38 · 1291 阅读 · 0 评论 -
rabbitMQ如何保证消息有序性
为了解决这个问题,可以限制队列仅有一个消费者(独占模式),或者将消息拆分到多个队列(每个队列对应一个消费者),每个队列内的消息有序,从而间接保证整体上的有序性。: 在多生产者场景下,若要保证消息有序,必须确保消息按特定顺序进入队列,例如,确保所有生产者都在同一RabbitMQ节点上发布消息,避免因网络延迟或分布式系统不确定因素造成的消息乱序。: 有时可以通过业务逻辑设计,比如将关联性强、顺序要求严格的消息放到同一个队列里,而那些相对独立的消息则放在不同的队列中,通过这种方式也能达到部分消息的有序性要求。原创 2024-04-13 13:51:21 · 1475 阅读 · 1 评论 -
RocketMQ介绍
RocketMQ 是一个分布式消息中间件,它包含四个主要组件:NameServer、Broker 、Producer和Consumer。NameServer:(带头大哥NameServer 类似于轻量级的服务注册与发现中心,扮演着路由管理的角色。它负责维护 Broker 注册的 Topic 信息、队列信息以及 Broker 的地址列表等路由数据。生产者和消费者都需要连接 NameServer 获取路由信息,从而得知应该向哪个 Broker 发送或订阅消息。Broker:(小弟-干活的)原创 2024-04-13 14:52:50 · 652 阅读 · 0 评论 -
MQ的延迟队列
定时发布文章秒杀之后,给30分钟时间进行支付,如果30分钟后,没有支付,订单取消。预约餐厅,提前半个小时发短信通知用户。A -> 13:0016:30 延迟时间: 7*30 * 60 * 1000B -> 11:0017:30 延迟时间: 13*30 * 60 * 1000C -> 8:0013:30 延迟时间: 11*30 * 60 * 1000。原创 2024-04-11 08:27:51 · 949 阅读 · 0 评论 -
MQ如何保证消息的幂等性
在基于Spring Boot整合RabbitMQ的场景下,要保证消费者的幂等性,通常需要结合业务逻辑设计以及额外的技术手段来实现。:在消息发送前,先查询数据库,确认此消息是否已被处理过。如果是,则直接忽略;否则,继续处理,并在处理完成后更新消息状态为已处理。:每个消息都携带一个全局唯一的ID或业务ID(BizId),如订单号、交易流水号等,以便在消费端能够识别重复的消息。在RabbitMQ中,保证消费者的幂等性主要依赖于业务设计和实现,而非RabbitMQ本身提供的一种直接功能。原创 2024-04-12 17:50:51 · 489 阅读 · 0 评论