队列rabbitmq消息 模式
使用分布式事务 Seata 的 TCC 模式
Seata 的 TCC 模式需要通过人工编码来实现数据的回滚恢复,有点麻烦,但是性能最高。TCC 是 3 个方法的首字母缩写,即 Try 方法、Confirm 方法、Cancel 方法。Try 方法进行资源的检查和冻结,Confirm 方法是当所有事务都成功后调用的方法,Cancel 方法是当整体事 ......
RabbitMQ - RabbitMQ的使用场景有哪些?
总结 1.异步处理: 用户注册后,发送“注册邮件”和“注册短信”。用户注册完成后,提交任务到 MQ,发送模块并行获取 MQ 中的任务。 2.系统解耦:比如用注册完成,再加一个发送微信通知。只需要新增发送微信消息模块,从 MQ 中读取任务,发送消息即可。无需改动注册模块的代码,这样注册模块与发送模块通 ......
5.Websocket实现消息推送
项目需要一个在线协同办公功能来进行消息实时推送,我采用SpringBoot结合Websocket来实现该功能。Websocket采用全双工通信方式,可以在客户端和服务端之间建立持久的连接,实现实时的双向通信。 相对于传统的HTTP请求,WebSocket具有以下优势: 实时性:Websocket提供 ......
单调栈与单调队列算法总结
单调栈 知识概览 单调栈最常见的应用是找到每一个数离它最近的且比它小的数。 单调栈考虑的方式和双指针类似,都是先想一下暴力做法是什么,然后再挖掘一些性质如单调性,最终可以把目光集中在比较少的状态中,从而达到降低时间复杂度的作用,都是算法优化的一种手段。 对于的情况,更有可能是答案,因此将删掉。最终, ......
控制文件读写内容的模式
控制文本读写格式 t(默认的):文本模式 读写都是以字符串的为单位的 只能针对文本文件 必须加入encoding参数 b:二进制模式 读写文件都是以bytes/二进制为单位 可以针对所有的文件 不可以加入encoding参数 前提: b / t模式都不能单独使用,必须与r / w / a之一结合使用 ......
控制文本读写内容的模式
控制文本读写格式 t(默认的):文本模式 读写都是以字符串的为单位的 只能针对文本文件 必须加入encoding参数 b:二进制模式 读写文件都是以bytes/二进制为单位 可以针对所有的文件 不可以加入encoding参数 前提: b / t模式都不能单独使用,必须与r / w / a之一结合使用 ......
《软件需求模式》阅读笔记01
软件需求这门课课程要求精读一门关于软件需求方面的书,我选择了《软件需求模式》这本书,从这本书来了解一下软件需求的一些流程以及需要软件工作人员做好那些事情。 第1章主要介绍了什么是需求以及我们应该如何去得到他们。 需求的概念:定义系统需要做什么,而不是怎么去做。我的理解就是在需求时,我们不需要考虑怎么 ......
设计模式之享元模式
1. 定义 共享多个对象所共有的相同状态,以节省内存和提高性能 2. 口语化举例 现有一台灯工厂,有五个生产线(分别生产五种产品)、两个销售部门 这两销售部门在销售产品出去后,都会直接去找生产线生产,有时两部门同时销售出同一种产品,导致这个产品的生产线繁忙 现在,工厂提出一种新方法: 每个生产线都会 ......
八、延迟队列
一、延迟队列的概念 二、延迟队列使用场景 三、RabbitMQ中的TTL 1、消息设置TTL 2、队列设置TTL 3、两者的区别 四、整合springboot 1、创建项目 2、添加依赖 3、修改配置文件 4、添加Swagger配置类 五、队列TTL 1、代码架构图 2、配置文件类代码 3、消息生产 ......
使用分布式事务 Seata 的 AT 模式
有了上篇博客实现 XA 模式的基础,本篇博客在实现 AT 模式时,不需要修改任何代码,只需要增加一张数据库表,修改以下 application.yml 配置即可实现。AT 模式也是分两个阶段提交的事务模型,它缺弥补了 XA 模型中资源锁定周期过长的问题。 其实现的两个阶段的工作原理如下: 第一阶段注 ......
GOF23--23种设计模式(一)
一.什么是设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决一系列特定问题的套路。 它不是语法规定,而是一套用来提高代码复用性,可读性,可维护性,稳健性,安全性的解决方案 设计模式的雏形: 1995年,GOF(Gang of Four,四人/四人帮)合作出版了《设 ......
并发设计模式
1. 不可变模式 2. 写时复制模式 3. 线程本地存储模式 4. Guarded Suspension模式 5. Balking模式 6. Thread-Per-Message模式 7. Worker Thread模式 8. 两阶段终止模式 9. 生产者-消费者模式 ......
RabbitMQ 延迟消息的实现——延迟消息插件
步骤: 1. 把资料中的 rabbitmq_delayed_message_exchange-3.9.0.ez 复制到docker的mq容器的插件目录 2. 执行命令 docker exec -it mq rabbitmq-plugins enable rabbitmq_delayed_messag ......
PriorityBlockingQueue 优先级队列
package study; import lombok.Data; import java.util.Comparator; import java.util.concurrent.PriorityBlockingQueue; public class PriorityBlockingQueueD ......
RabbitMQ高可用集群的搭建部署(Centos7)
高可用集群架构 节点域名 操作系统 RabbitMQ版本 Erlang版本 iamdemo.tp-link.com Centos7.9 3.8.28 23.3-2 iamdemo2.tp-link.com Centos7.9 3.8.28 23.3-2 iamdemo3.tp-link.com Ce ......
软件设计模式学习每日总结-第十四天
第十四天 行为型模式:对在不同对象之间划分责任与算法的抽象化。 类行为型模式:使用继承关系在几个类之间分配行为。 对象行为型模式:使用对象的聚合关联关系来分配行为。 职责链模式:避免发送者和接收者耦合,有多个发送者和接收者,这些对象形成一条职责链。 命令模式: ......
[香橙派开发系列]输入模式和上拉下拉
目录前言一、设置输入模式二、读取端口电平三、配置上拉下拉电平1.上拉输入2.下拉输入3.设置函数最后 前言 前面说了一下输出模式,这一章说一下输入模式,学完输入模式后我们就可以用一个软件模拟IIC让OLED0.96寸的显示屏显示内容了。 一、设置输入模式 前面说过设置gpio的模式的函数是pinMo ......
RabbitMQ 延迟消息的实现——死信交换机(不推荐)
生产者给MQ发送 带过期时间的消息: @GetMapping("/mq07")public void sendTTLMessage(){ //第四个参数:后置消息处理器。用后置消息处理器给消息加过期时间 rabbitTemplate.convertAndSend("simple.direct", " ......
Java 模式匹配的演变
Java 21 之前:类型检查的故事 在 Java 21 之前的时代,模式匹配主要涉及类型检查和手动提取。这通常会导致代码冗长且容易出错,尤其是在处理复杂的数据结构时。 Java 21 的游戏规则改变者:记录模式进入 Java 21,场景发生了巨大变化。记录模式引入了一种更优雅的方式来解构这些记录对 ......
阻塞队列之 LinkedBlockingQueue
LinkedBlockingQueue:Java多线程编程中的阻塞队列 在Java多线程编程中,LinkedBlockingQueue 是一个非常重要的类,它提供了一种用于在生产者和消费者之间进行数据传递的机制。LinkedBlockingQueue 广泛应用于各种场景,如线程池、任务队列等。本文将 ......
RabbitMQ 消费者可靠性——业务幂等性
如何保证业务是幂等的? 方案一: 生产者、消费者都配置上 setCreateMessageIds(true)。配好后,生产者给MQ发消息,消息就会带上自动生成的 id。将来消费者拿到消息后,就可以获取到 id,把 id保存起来 做唯一匹配 代码示例: package com.itheima;impo ......
VMware 虚拟机的三种网络工作模式
目录介绍桥接模式桥接模式网络设置NAT模式实际操作中注意事项Host-Only 介绍 vmware为我们提供了三种网络工作模式, 它们分别是: Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 默认情况下,当安装完VMware虚拟机软件时,进入vmware, ......
设计模式之外观模式
1. 定义 提供了一个统一的接口,用来访问子系统中的一组接口 2. 口语化表述 工厂里组装台灯,流程、配件等有多种方式,每种台灯有自己的生产线 现在,需要某一种台灯,一种方式是直接去找这个台灯的生产线生成,这会令人烦恼,因为寻找是一件无聊而繁琐的事情 另一种方式是成立一个工厂前台,需要什么台灯就只需 ......
RabbitMQ避免重复消费
在Java中,可以使用消息队列来实现消息的异步处理,其中常用的消息队列有 RabbitMQ、ActiveMQ、Kafka 等。 什么是幂等性? 幂等性是指无论操作执行多少次,都是得到相同的结果,而不会产生其他副作用。 在rabbitMQ中 什么是消息重复消费? 同一条消息在MQ中被消费多次 出现重复 ......
深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析
本文分享自华为云社区《深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析》,作者:柠檬味拥抱。 UIAbility组件概述 UIAbility组件是HarmonyOS中一种包含UI界面的应用组件,主要用于与用户进行交互。每个UIAbility组件实例对应最 ......
七、死信队列
一、死信的概念 二、死信的来源 三、死信实战 1、代码架构图 2、消息TTL过期 2.1 消费者代码 消费者01 消费者02 2.2 生产者代码 2.3 展示效果 3、队列达到最大长度 3.1 代码修改 3.2 展示效果 4、消息被拒 4.1 代码修改 4.2 展示效果 ......
消息队列入门 —— 以 Kafka 为例(一)
消息队列入门 —— 以 Kafka 为例(一) 概述 当我们的应用逐步变得庞大,各层应用之间调用关系越来越复杂,对系统的可用性以及可扩展性要求也越来越高。消息队列作为分布式系统架构中的一个关键中间件,提供了“消息传递”和“消息排队模型”,可以应用在系统解耦、异步处理、流量削峰等多个场景,有着举足轻重 ......
RabbitMQ 消费者可靠性——失败重试机制
效果: 消费者抛异常后,会本地重试,如果本地重试次数达到最大重试次数之后,直接给队列返回reject,队列收到后就会丢弃该消息,也就是策略的第一种 但就这样把删了不太好,所以有了失败消息处理策略 第二种 ImmediateRequeueMessageRecoverer:消费者抛异常后,会本地重试,如 ......
RabbitMQ 消费者可靠性——消费者确认
代码示例: 在消费者的 appplication.yml 文件中加入配置: spring: rabbitmq: listener: simple: acknowledge-mode: auto ......