youyichannel

志于道,据于德,依于仁,游于艺!

0%

消费者订阅了某个 Topic 后,就能够从 Broker 获取所有关于这个 Topic 的消息,但是有时候并不是有关这个 Topic 的消息都是消费者感兴趣的。

比如拿游戏来举例子,游戏爱好者们都喜欢游戏相关的信息(订阅了游戏 Topic),但是有些喜欢MC、有些喜欢COC,于是乎他们也只想获取他们喜欢的游戏的相关消息,所以需要做消息过滤。

阅读全文 »

事件 (Event) 通知是 Spring 核心功能之一。

其中核心的类 org.springframework.context.ApplicationEvent,该类定义了整个 Spring 应用中的各种事件。

阅读全文 »

RocketMQ 的消息存储

RocketMQ 采用多 Topic 混合存储一个文件的方式来保存消息,即一个 commitlog 文件中会包含分给此 Broker 的所有消息,不论消息属于哪个 Topic 的哪个 Queue。

阅读全文 »

延迟消息,即生产者给一条消息设置延迟时间,看起来消息是延迟了一段时间之后才发送出去,然后消费者才能够消费到这条消息。

常见的场景就是订单自动取消的场景,下单之后 15min 没有支付订单,这个订单就会被自动取消。

那延迟消息该如何去实现?

阅读全文 »

这篇文章来介绍下 RocketMQ 事务消息的作用以及他的实现原理。

事务消息也是分布式事务的一种解决方案,在生产上也很常用。

事务是什么?

简单来说,事务就是指一系列操作要么全部执行成功,要么全部执行失败,不会出现一些成功一些失败的情形。

【栗子🌰】转账:A 给 B 转账 1000 元,那么 A 账户扣款 1000 和 B 账户进账 1000 这两个操作必须全部成功,或者全部失败,否则就破坏了数据的一致性。

严格来说,事务必须满足 ACID 特性,这里不再赘述。

阅读全文 »

对于 git clone, pull, push 等基础用法本文不再赘述。

.gitignore 文件

场景:需要在项目中加一个不需要提交到远程仓库的文件。

那我们只需要将这个文件写到 .gitignore 文件中就好了,但是这个文件需要执行相应命令后才会生效:

git rm -r --cached .
git add .

注意:上述命令中,.代表当前目录下的所有文件,可以按需换成对应的单个文件名。

阅读全文 »

本文主要介绍 Broker 底层的存储原理,理解什么是「刷盘」以及 RocketMQ 为了底层存储性能的提升做了哪些事情。

阅读全文 »