自定义开发限流组件 之 场景需求分析

限流 

限流,通常讲就是限制流量,也有很多其他的说法,比如:限频、疲劳度控制等。最近遇到一个需求,系统A作为一个专门推送消息给客户的消息中心系统,对于每个客户是否能接受消息,能接受多少消息,接收消息的速度,能接受哪些消息等都要进行控制,这也就引入了需要做消息限流的需求了,而且是多维度的。分析对于限流的维度来

SpringBoot怎么自定义一个Starter ?


小伙伴们曾经可能都经历过整天写着CURD的业务,都没写过一些组件相关的东西,这篇文章记录一下SpringBoot如何自定义一个Starter。原理和理论就不用多说了,可以在网上找到很多关于该方面的资料,这里主要分享如何自定义。需求在一个项目中,用户需要发送消息,可以通过邮件,QQ,微信,钉钉,飞书等

两种方案实现Dubbo泛化调用


Dubbo的泛化调用是一个服务A在没有服务B的依赖,包的情况下,只知道服务B的服务名:服务的接口的全限定类名和方法名,以及参数,实现服务A调用服务B。方案一服务A定义接口,服务B实现该接口,意味着是服务B需要服务A的依赖,是满足泛化调用的条件的,以下是具体的实现。1,服务A接口定义public in

Java中如何实现一个回调函数

java 

有时候,我们可能想在自己的也会方法中通过不同的中间返回结果,来执行不同的操作,听起来似乎可以使用if-else来进行分支实现,但是有时候背后的业务十分复杂,或者是中间业务根本没有返回值等,这时候就很难通过if-else来判断。效果以下的代码中,当send()方法成功处理时,执行onSuccess()

RocketMQ支持任意时间的延时消息 解决方案

方案一由于RocketMQ只有固定的延时等级,如下:public enum DelayTimeLevel { NO_NEED_TO_DELAY

Spring基本概念小记

spring 

SpringSpring 中的IOC(控制反转)以前创建对象都是通过new的形式来创建的,比如在项目中,Controller层需要Service的对象,需要在Controller中new出来使用才行,但是,随着业务的增加,Controller也随之对了起来,相对应的Service也new的越来越多,

微服务系列之 初识Sentinel

开始之前,先了解一下什么叫做雪崩问题1.1.雪崩问题及解决方案1.1.1.雪崩问题微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。如图,如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影响。但是,依赖服务I

微服务系列之 发布订阅-TopicExchange

概述TopicExchange与DirectExchange类似,区别在于routingKey必须是多个单词的列表,并且以 · 分割。Queue与Exchange指定BindingKey时可以使用通配符:#:代指0个或多个单词*:代指一个单词利用SpringAMQP演示TopicExchange

微服务系列之 发布订阅-Direct Exchange

概述Direct Exchange 会将接收到的消息根据规则路由到指定的Queue,因此称为路由模式(routes)。每一个Queue都与Exchange设置一个BindingKey发布者发送消息时,指定消息的RoutingKeyExchange将消息路由到BindingKey与消息RoutingK

微服务系列之 发布订阅-Fanout Exchange

概述Fanout Exchange 会将接收到的消息广播到每一个跟其绑定的queue生产者将消息发送到交换机,由交换机再去发给绑定该交换机的所有队列,每个队列接受到的消息都是一样的,再有消费者去消费,注意,此处的交换机exchange并不存储消息,存储消息的是队列queue。SpringAMQP提供