分布式消息队列RocketMQ-学习文档-第四章
分布式消息队列RocketMQ学习文档
本文资料来源:尚硅谷 | 本文发表时RocketMQ的版本:v4.9.2 | 本资料是第四章内容,本文档总共有四章。
文章目录:
分布式消息队列RocketMQ-学习文档-第一章
分布式消息队列RocketMQ-学习文档-第二章
分布式消息队列RocketMQ-学习文档-第三章
分布式消息队列RocketMQ-学习文档-第四章
第4章 RocketMQ应用一、普通消息1、消息发送分类Producer对于消息的发送方式也有多种选择,不同的方式会产生不同的系统效果。
①、同步发送消息同步发送消息是指,Producer发出一条消息后,会在收到MQ返回的ACK之后才发下一条消息。该方式的消息可靠性最高,但消息发送效率太低。
{width=”5.064583333333333in” height=”3.720138888888889in”}
②、异步发送消息异步发送消息是指,Producer发出消息后无需等待MQ返回ACK,直接发送下一条消息。该方式的消息可靠性可以得到保障,消息发送效率也可以。
{width=”5.71041666666 ...
分布式消息队列RocketMQ-学习文档-第三章
分布式消息队列RocketMQ学习文档
本文资料来源:尚硅谷 | 本文发表时RocketMQ的版本:v4.9.2 | 本资料是第三章内容,本文档总共有四章。
文章目录:
分布式消息队列RocketMQ-学习文档-第一章
分布式消息队列RocketMQ-学习文档-第二章
分布式消息队列RocketMQ-学习文档-第三章
分布式消息队列RocketMQ-学习文档-第四章
第3章 RocketMQ工作原理一、消息的生产1、消息的生产过程Producer可以将消息写入到某Broker中的某Queue中,其经历了如下过程:
Producer发送消息之前,会先向NameServer发出获取消息Topic的路由信息的请求
NameServer返回该Topic的路由表及Broker列表
Producer根据代码中指定的Queue选择策略,从Queue列表中选出一个队列,用于后续存储消息
Produer对消息做一些特殊处理,例如,消息本身超过4M,则会对其进行压缩
Producer向选择出的Queue所在的Broker发出RPC请求,将消息发送到选择出的Queue
路由表:实际是 ...
分布式消息队列RocketMQ-学习文档-第二章
分布式消息队列RocketMQ学习文档
本文资料来源:尚硅谷 | 本文发表时RocketMQ的版本:v4.9.2 | 本资料是第二章内容,本文档总共有四章。
文章目录:
分布式消息队列RocketMQ-学习文档-第一章
分布式消息队列RocketMQ-学习文档-第二章
分布式消息队列RocketMQ-学习文档-第三章
分布式消息队列RocketMQ-学习文档-第四章
第2章 RocketMQ的安装与启动一、基本概念1、消息(Message)消息是指,消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。
2、主题(Topic){width=”5.575in” height=”5.533333333333333in”}
Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。 topic:message 1:n message:topic 1:1
一个生产者可以同时发送多种Topic的消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅和消费一种Topic的消息。 ...
分布式消息队列RocketMQ-学习文档-第一章
分布式消息队列RocketMQ学习文档
本文资料来源:尚硅谷 | 本文发表时RocketMQ的版本:v4.9.2 | 本资料是第一章内容,本文档总共有四章。
文章目录:
分布式消息队列RocketMQ-学习文档-第一章
分布式消息队列RocketMQ-学习文档-第二章
分布式消息队列RocketMQ-学习文档-第三章
分布式消息队列RocketMQ-学习文档-第四章
第1章 RocketMQ概述一、MQ概述1、MQ简介MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。
2、MQ用途从网上可以查看到很多的关于MQ用途的叙述,但总结起来其实就以下三点。
①、限流削峰MQ可以将系统的超量请求暂存其中,以便系统后期可以慢慢进行处理,从而避免了请求的丢失或系统被压垮。
{width=”6.106944444444444in” height=”2.9805555555555556in”}
②、异步解耦上游系统对下游系统的调用若为同步调用,则会大大降低系统的吞 ...
Difference between FileReader vs FileInputStream in Java
Difference between FileReader vs FileInputStream in Java? AnswerEven though both FileReader and FileInputStream are used to read data from a file in Java, they are quite different. The main difference between the FileReader and FileInputStream is that one reads data from a character stream while the other reads data from a byte stream. The FileReader automatically converts the raw bytes into characters by using the platform’s default character encoding. This means you should use this class if yo ...
统计某个目录下所有的文件及文件夹(包括子目录)等相关操作
这道题与上面这道题出自于我今天的面试,实现的需求大同小异。但是我却不会,没能做出来,这里做一下笔记。
package com.example.study_source.pager;import org.apache.commons.io.FilenameUtils;import org.junit.Test;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;/** * @author 030 * @date 0:14 2021/10/26 * @description 统计某个目录下所有的文件及文件夹相关操作 */public class FileListTest { /******************************************罗列出某个指定目录下的所有文件夹及文件(包括子目录下的) start *****************************************/ //获取层级的方法 private static ...
统计某个文件中数字、字母等出现的次数
这道题与下面这道题出自于我今天的面试,实现的需求大同小异。但是我却不会,没能做出来,这里做一下笔记。
package com.example.study_source.pager;import org.junit.Test;import java.io.*;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author 030 * @date 19:37 2021/10/25 * @description 统计某个文件中目标内容的个数 */public class FileStatisticsTest { /** * 统计str中包含的数字 * * @param str 目标字符串 * @return 包含数字的个数 */ private static long getNumCnt(String str) { // 统计个数 // 注意:基础数据类型作为普通变量(定义在方法内部的变量),不会进行初 ...
全局异常处理
前言在Java web 项目中,我们经常需要自己去实现一些异常处理的代码。随着Spring框架的不断升级,也给我们带来了更多的选择。下面说一下可行性比较好的两个方式吧:
采用 Spring AOP 方式实现
采用 Spring3.2之后提供的 @ControllerAdvice 注解 和 @ExceptionHandler 实现
关于 Controller 层异常的处理如果你是想处理关于Controller层的异常(不仅限于是controller层自身主动抛出/catch的异常,只要是最终由controller层抛出的异常都可以使用 @ControllerAdvice 方式),那么以上两种方式均可由你选择。
@ControllerAdvice + @ExceptionHandler 方式见名知意,@ControllerAdvice 是对于 使用@Controller的建议,那么凡是使用了@RequestMapping的地方的异常均可该种方式处理。下面我以一个demo来说明一下,如何使用吧。controller层
@RestControllerpublic class UserC ...
Java实现批量重命名文件
前言有时候,我们需要对一个目录下的所有图片都进行重命名,如果你选择手动方式进行,在图片少的情况下还可以进行,但是如果一个目录下有几百张图片时,你就会感到无比痛苦了。这时候就会想借助工具来实现了。如下就是一种很简单的实现方式。
实现可以选择直接下载这个jar包工具,然后通过 java -jar xxx.jar 的方式运行,也可以直接看其源代码然后拷贝其rename方法运行即可。
代码已托管在gitee上,请移步查看。
流操作之下载图片@Testpublic void downloadImg() throws Exception{ String urlStr = "https://images7.alphacoders.com/118/1180526.jpg"; // 构造 java.net.URL 网络请求对象 URL url = new URL(urlStr); // 通过 url 打开一个 HttpURLConnection 连接 HttpURLConnection connection = url.openConnection(); // ...
Java代码实现裁剪图像
前言前些时候,我在某个网站上注册了一个账号,在修改个人头像时,发现该网站仅支持矩形头像的显示,但是我个人是比较喜欢圆形头像的;因此我需要将电脑上一张矩形图片处理成白底圆形的图片,但是我找了好多在线方法(ps:不太喜欢给电脑上下载许多不常用的工具),发现都不太好用,于是决定看能否用代码来实现这个需求,因此有了本文。
构思在Java语言中,其实有一个操作图像的类库,就是 BufferedImage。Image 是一个抽象类,BufferedImage 是 Image 的实现类,是一个操作缓冲区图像的类。BufferedImage 的主要作用是将一张图片加载到内存中,然后我们就可以实现对图像的一些操作。比如:获得绘图对象、图像缩放、选择图像平滑度、图片大小变换、改变图片显示颜色、设置透明度等功能。
实现package com.abc.learn;import org.apache.commons.io.FilenameUtils;import org.junit.Test;import sun.misc.BASE64Encoder;import javax.imageio.ImageIO;i ...