![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
中间件
文章平均质量分 68
本专栏专注于RbbitMQ,Kafka,Redis等知识的分享合记录。
编程、小哥哥
七年 IT工程师一名 现目前在基金投研公司担任java 大数据开发工程师 天天不是在写软件就是在写bug的路上。
展开
-
RabbitMQ之基础入门
在 AMQP 中,Producer 将消息发送到 Exchange ,再由 Exchange 将消息路由到一个或多个 Queue 中(或者丢弃)。Exchange 根据 Routing Key 和 Binding Key 将消息路由到 Queue ,目前提供了四种类型。A. QueueQueue: Queue(队列)是RabbitMQ的内部对象,用于存储消息,RabbitMQ 中的消息都只能存储在 Queue 中,生产消息并最终投递到Queue中, 消费者可以从Queue中获取消息并消费。原创 2024-04-30 16:28:23 · 1703 阅读 · 2 评论 -
mybatis-plus之数据源切换事务失效问题
由于业务数据来源不同 需要配置多个数据源来进行数据的查询 编辑等操作 这一切换业务对数据的一致性要求很高那就要保证ACID啦 也就是数据的有效性 要么是成功的 要么是失败的。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。一定要明白事务的传播特性,开发中其实常用的就只有REQUIRED和REQUIRES_NEW,大家只要把这两个搞明白,就能应对绝大数的问题。多数据源失效,然后去掉事务发现切换正常 在于这样的切换失去了事务控制的行为。事务的传播行为可以由传播属性指定。原创 2024-05-13 10:30:54 · 393 阅读 · 0 评论 -
分布式锁之RedissonLock
俗话说他就是看门狗,看门狗机制是一种用于保持Redis连接活跃性的方法,通常用于分布式锁的场景。看门狗的工作原理是:当客户端获取到锁之后,会对Redis中的一个特定的键设置一个有限的过期时间,然后每隔一段时间(默认是15秒),客户端会对这个键“续约”,即重新设置它的过期时间,以此来保持锁的持有状态,防止锁因为某些原因(如客户端崩溃或网络问题)而被释放。以上的是分布式锁之RedissonLock 若需完整代码 可识别二维码后 给您发代码。实现DistributedLock的实现类逻辑。原创 2024-05-06 21:51:37 · 515 阅读 · 1 评论 -
分布式锁之-mysql
以上的是分布式锁之-mysql 若需完整代码 可识别二维码后 给您发代码。1:基于 MySQL 实现的乐观锁。2:基于 MySQL 实现的悲观锁。原创 2024-05-04 21:27:10 · 309 阅读 · 0 评论 -
分布式锁之-redis
即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是,分布式系统中竞争共享资源的最小粒度从线程升级成了进程。以上的是分布式锁之-redis 若需完整代码 可识别二维码后 给您发代码。A:Redisson 实现的分布式锁使用演示。B:自己实现的 Redis 分布式锁使用演示。2:高可用的获取锁与释放锁。3:高性能的获取锁与释放锁。原创 2024-05-04 21:15:11 · 437 阅读 · 0 评论 -
RabbitMQ之生产批量发送
timeout :超过收集的时间的最大等待时长,单位:毫秒。不过要注意,这里的超时开始计时的时间,是以最后一次发送时间为起点。但是 RabbitMQ 并没有提供了批量发送消息的 API 接口,使用 spring-amqp 的 BatchingRabbitTemplate 实现批量能力。不过值得注意的是,我们一次发送十条消息到 RabbitMQ Broker 中去,在 RabbitMQ Broker 显示的也是 1 个消息。bufferLimit :超过收集的消息占用的最大内存。原创 2024-05-01 14:41:49 · 597 阅读 · 1 评论 -
RabbitMQ之消费者批量消费
在一些业务场景下,我们希望使用 Consumer 批量消费消息,提高消费速度。可以通过对 SimpleRabbitListenerContainerFactory 进行配置实现批量消费能力。若需完整代码 可识别二维码后 给您发代码。原创 2024-05-01 14:29:35 · 1039 阅读 · 5 评论 -
RabbitMQ之事务机制
事务要么成功 要么失败 传统事务有4个主要特性:原子性、一致性、隔离性、持久性。◆ Eventually consistent (最终一致性)◆ 分区容忍性 (Partition tolerance)◆ 随着后端架构的微服务化,事务无法在本地完成。◆ 在传统单体应用中,事务在本地即可完成。◆ 可用性(Availability)◆ 一致性(Consistency)◆ 一致性(Consistency)◆ 持久性(Durability)◆ 原子性(Atomicity)◆ 隔离性(Isolation)原创 2024-05-01 12:12:22 · 800 阅读 · 2 评论 -
RabbitMQ之消费者ACK 功能
若 RabbitMQ 服务器端一直没有收到消费者的确认信号,并且消费此消息的消费者已经断开连接, 则服务器端会安排该消息重新进入队列,等待投递给下一个消费者(也可能还是原来的那个消费者)。可以看到当前队列中的 “Ready” 状态和 “Unacked” 状态的消息数,分别对应等待投递给消费者的消息数和已经投递给消费者但是未收到确认信号的消息数。对于手动确认的方式,RabbitMQ Broker 将消息发送给 Consumer 之后,由 Consumer 手动确认之后,才任务消息投递成功。原创 2024-04-30 17:23:44 · 1294 阅读 · 0 评论 -
RabbitMQ之生产者confirm机制
接下来需要再介绍生产者的confirm机制;核心作用在与能确保生产者将消息发送到mq的channel中,这一过程需要确保消息不丢失就需要生产者给予mq一个确认发送消息的机制。confirm 模式最大的好处在于是异步的,一旦发布一条消息,生产者应用程序就可以在等信道返回确认的同时继续发送下一条消息,当消息最终得到确认之后,生产者应用便可以通过回调方法来处理该确认消息,如果RabbitMQ 因为自身内部错误导致消息丢失,就会发送一条 nack 消息, 生产者应用程序同样可以在回调方法中处理该 nack 消息。原创 2024-05-01 10:44:48 · 287 阅读 · 0 评论 -
RabbitMQ之顺序消费
消息发送端的顺序,大部分业务不做要求,谁先发消息无所谓,如果遇到业务一定要发送消息也确保顺序,那意味着,只能全局加锁一个个的操作,一个个的发消息,不能并发发送消息。虽然消息队列的消息是顺序的,但是多个消费者并发消费消息,获取的消息的速度、执行业务逻辑的速度快慢、执行异常等等原因都会导致消息顺序不一致。我们说如何保证消息顺序性,通常说的就是消费者消费消息的顺序,在多个消费者消费同一个消息队列的场景,通常是无法保证消息顺序的,一般我们讨论如何保证消息的顺序性,会从下面三个方面考虑。2:队列中消息的顺序。原创 2024-05-01 11:04:23 · 1928 阅读 · 0 评论 -
RabbitMQ之消费者并发消费
当生产者的推送速度是远远超过消费者的能力的,可以提高消费者的消费速度。比如在java中我们可以启动多个 JVM 进程,实现多进程的并发消费,从而加速消费的速度,在mq中也可以通过设置配置。Consumer 线程,负责从 RabbitMQ Broker 获取 Queue 中的消息,存储到内存中的 BlockingQueue 阻塞队列中。@RabbitListener 注解中,有 concurrency 属性,它可以指定并发消费的线程数。若需完整代码 可识别二维码后 给您发代码。原创 2024-05-01 10:42:58 · 744 阅读 · 2 评论 -
RabbitMQ之延迟队列
RabbitMQ 提供了过期时间 TTL 机制,可以设置消息在队列中的存活时长。在消息到达过期时间时,会从当前队列中删除,并被 RabbitMQ 自动转发到对应的死信队列中。延迟消息就是指当消息被发送以后,并不想让消费者立即拿到消息,而是等待指定时间后,消费者才拿到这个消息进行消费。2:利用 RabbitMQ 中的插件 x-delay-message。然后再来消费该死信队列,这样就可以实现一个延迟队列的效果。失败重试:业务操作失败后,间隔一定的时间进行失败重试。此种方式需要安装mq的延迟第一列插件。原创 2024-05-01 10:42:04 · 895 阅读 · 1 评论 -
docker安装RabbitMQ
找到 rabbitmq_delayed_message_exchange 去进行下载,注意要和你的 RabbitMQ 版本一致 比如我的 RabbitMQ 是 3.10.1 的, 就可以使用 3.10.x 的 插件。我们可以看到 是有 /plugins 路径的,复制插件到容器内部,复制的话我们可以借助 docker cp 指令来完成。到管理后台的页面上,去创建交换机的页面看一下,如果多了一种 x-delayed-message,就说明安装成功。使用docker安装mq的延迟插件。1:上传到 docker。原创 2024-05-01 10:35:39 · 455 阅读 · 0 评论 -
docker的安装以及docker-compose
docker-ce docker-ce-cli: 这是要安装的软件包的名称。docker-ce 是 Docker CE 软件的主要组件,docker-ce-cli 是用于与 Docker 进行交互的命令行工具。3:通过sudo yum install -y docker-ce docker-ce-cli 安装 Docker CE (Community Edition) 软件。-add-repo: 该选项告诉 yum-config-manager 命令要添加一个新的仓库。原创 2024-05-01 10:22:36 · 960 阅读 · 1 评论 -
ElasticSearch
ELK是包含但不限于Elasticsearch(简称es)、Logstash、Kibana 三个开源软件的组成的一个整体。这三个软件合成ELK。是用于数据抽取(Logstash)、搜索分析(Elasticsearch)、数据展现(Kibana)的一整套解决方案,所以也称作ELK stack。本课程从分别对三个组件经行详细介绍,尤其是Elasticsearch,因为它是elk的核心。本课程从es底层对文档、索引、搜索、聚合、集群经行介绍,从搜索和聚合分析实例来展现es的魅力。Logstash从内部如何采集数据原创 2023-09-24 12:37:37 · 344 阅读 · 0 评论