大漠知秋的加油站

  • 首页
Java
Java

SpringBoot AMQP

SpringBoot 的支持 SpringBoot 已经提供了对 AMQP 协议完全支持的 spring-boot-starter-amqp 依赖,引入此依赖即可快速方便的在 SpringBoot 中使用 RabbitMQ。参考:Spring AMQP。 特点 用于异步处理消费消息的监听器容器。 用于发送和接收消息的 RabbitTemplate。 RabbitAdmin 用于自动声明队列、交换和绑定。 RabbitAdmin 作用 declareExchange:创建交换机。 deleteExchange:删除交…

2022年7月7日 0条评论 731点热度 0人点赞 大漠知秋 阅读全文
Java

死信队列机制

简介 什么是死信队列?其本质也是一个队列,只是配置上了一个 Dead-Letter-Exchange 属性。 什么是死信?死信其实也可以理解为普通的的消息,只是在以下几种情况会称为死信。 消息 TTL 过期时。 被 Nack/Reject 并且 requeue = false 时。 队列达到最大长度(超过 Max length 时)。 死信队列工作原理 死信队列中成为死信的消息会转发到普通的交换机中(起名带有 dlx 关键字,是为了方便知道这个是用来接收死信用的),再路由到一个普通的队列(起名同交换机)中,最后再由…

2022年7月6日 0条评论 999点热度 0人点赞 大漠知秋 阅读全文
Java

消息过期机制

简介 设想一下只有生产者,而没有消费者的时候或者消费者处理能力比生产能力弱 N 倍的时候,RabbitMQ 上就会堆积大量消息,几万、几十万、几百万。那 RabbitMQ 所在机器的内存、硬盘等硬件资源也是有限的,超过负荷就会出现崩溃的现象,导致消息丢失。 针对这个问题 RabbitMQ 提供了消息过期机制 TTL(Time to Live)。简单理解就是超过一定时间没有被消费的消息,就过期了,要扔掉。 消息 TTL 消息本身有一个过期时间,每个消息之间是不一样的。 队列 TTL 进入队列的所有消息都具有一个固定的…

2022年7月6日 0条评论 943点热度 0人点赞 大漠知秋 阅读全文
Java

消费者限流机制

简介 默认情况下,消费者并不是处理一条消息,RabbitMQ Server 再从 Queue 中推送一条继续处理。而是一下子尽可能的投送更多,缓存到到本地内存中等待处理。 比如 Queue 中存在 10W 条数据,消费者会一边处理一条,一边会进行缓存后续推送的 N 条,而这缓存的 N 条有可能会造成 OOM 或者其他故障。 消费者处理不了的场景 生产者发送速率高,消费者消费速率低。如:生产者每秒钟生产 1000 条消息,消费者每5秒才能处理一条消息,一段时间后,消费者 OOM。 生产者已启动一定时间,消费者没启动,…

2022年7月6日 0条评论 1312点热度 0人点赞 大漠知秋 阅读全文
Java

RabbitMQ 消息百分百投递方案

简介 如上图所示,从 Publisher 开始,发送一个消息并指定 Routing key,经由 Connection 中的 Channel 到达对应的 Exchange,消息到达 Exchange 之后根据 Routing Key 路由到对应的 Queue。消息再从 Queue 中经由 Consumer 端的 Connection 中的 Channel 到达对应的 Consumer。 Publisher: 消息的生产方。 消息: 一条消息想要发送到 RabbitMQ Server,需要指定 Exchange 和 …

2022年7月6日 0条评论 1219点热度 0人点赞 大漠知秋 阅读全文
Docker CE

问题 - 异常占用大量 CPU 资源排查

  一日,收到服务器 CPU 资源占用满的报警,如下,随抓紧排查: top   首先使用最简单的工具 top 一下,查看是哪个进程占用了大量的 CPU 资源,如下:   可以看到的是一个 Java 进程把所有的 CPU 资源都给占用掉了,一个完整的 Java 程序是由大量的线程组成的,也就是说进程里面的某一个或多个线程可能占用了大量的 CPU 资源,只需找出它即可。 top -Hp <pid>   使用命令 top -Hp <pid> 即可查看指定 pid 进程下的线程情况,上图查看到这个 …

2021年1月27日 0条评论 492点热度 0人点赞 大漠知秋 阅读全文
Java

工具 - 阿里 Java 在线调试工具 Arthas

Arthas

2020年11月4日 0条评论 497点热度 0人点赞 大漠知秋 阅读全文
Java

问题 - Spring Boot 以流的方式读取配置文件

问题说明   在以往的项目中,我们有时会读取资源目录下的*.config文件,有时会读取绝对路径,还挺好用,但是这种做法在Spring Boot项目中就不好使了。因为Spring Boot项目把文件都打了一个*.jar包,这是绝对路径就不好使了,要使用流的方式读取文件。 示例代码: Resource resource = new ClassPathResource("config/*.config");

2019年1月3日 0条评论 1151点热度 0人点赞 大漠知秋 阅读全文
Java

编写高质量代码 - Java

参考:编写高质量代码:改善Java程序的151个建议 持续更新、Java、笔记 1.使用 long 类型时注意使用 大写L // 错误的 long i = 1l; // 正确的 long i = 1L; 2.三元表达式类型务必一致   三元操作符是if-else的简化写法,在项目中使用它的地方很多,也非常好用,但是好用 又简单的东西并不表示就可以随便用,我们来看看下面这段代码: public static void main(String[] args) { int i = 80; String s = Strin…

2019年1月3日 0条评论 1106点热度 0人点赞 大漠知秋 阅读全文
Spring Boot

问题 - Spring Boot 以流的方式读取配置文件

问题说明   在以往的项目中,我们有时会读取资源目录下的*.config文件,有时会读取绝对路径,还挺好用,但是这种做法在Spring Boot项目中就不好使了。因为Spring Boot项目把文件都打了一个*.jar包,这是绝对路径就不好使了,要使用流的方式读取文件。 示例代码: Resource resource = new ClassPathResource("config/*.config");

2019年1月3日 0条评论 0点热度 0人点赞 大漠知秋 阅读全文
分类
  • C++ / 11篇
  • Develop Software / 3篇
  • Docker CE / 24篇
  • Elasticsearch / 3篇
  • FastDFS / 1篇
  • Flutter / 1篇
  • Git / 3篇
  • GitLab / 6篇
  • Golang / 21篇
  • Http Client 4.5.2 / 2篇
  • Java / 14篇
  • Kubernetes / 19篇
  • Linux / 65篇
  • Mac / 5篇
  • Maven / 1篇
  • MyBatis / 1篇
  • MySQL / 8篇
  • Nginx / 6篇
  • Rabbit MQ / 10篇
  • Redis / 1篇
  • Spring / 1篇
  • Spring Boot / 12篇
  • Spring Cloud Finchley.RELEASE / 50篇
  • Sublime / 2篇
  • Windows / 1篇
  • 吉他 / 2篇
  • 图论 / 8篇
  • 数据结构与算法 / 11篇
  • 未分类 / 1篇

COPYRIGHT © 2023 大漠知秋的加油站. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备16029200号-2