后端
未读
断路器CircuitBreaker
1.简介 Circuit Breaker是一套规范和接口,落地实现者是Resilience4J Resilience4i 是一个专为函数式编程设计的轻量级容错库。Resilience4i 提供高阶函数(装饰器),以通过断路器、速率 限制器、重试或隔板增强任何功能接口、lambda 表达式或方法引用。
后端
未读
服务接口调用OpenFeign
1.简介 OpenFeign基本上就是当前微服务之间调用的事实标准,只需创建一个Rest接口并在该接口上添加注解@FegnCLent即可 2.配置OpenFeign pom <!--openfeign-->
<dependency>
<groupId>org.springframework.
后端
未读
服务注册与发现的解决方案Consul
1.简介 Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发。 提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案
后端
未读
RabbitMQ其他知识
1.幂等性 1.1 概念 用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱
后端
未读
RabbitMQ之确认发布2
1.发布确认高级示例 在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?特别是在这样比较极端的情况,RabbitMQ 集群不可用的时候,
后端
未读
RabbitMQ之延迟队列
1.延迟队列概念 延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。 2.延迟队列使用场景 1.订单在十分钟之内未支付则自动取消 2.新创建的店铺,如果在十天内都没
后端
未读
RabbitMQ之死信队列
1.死信 先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到 queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费
后端
未读
RabbitMQ之交换机
1.交换机(Exchanges ) 生产者生产的消息从不会直接发送到队列,只能将消息发送到交换机,消息能路由发送到队列中其实是由 routingKey(bindingkey)绑定 key 指定的,借由交换机来应对更多种对消息处理的情形,常用的交换机类型有如下几种 名称 类型 直接(发布订阅模式) d
后端
未读
RabbitMQ之确认发布1
1.单个确认发布 即发布一次确认一次,由于线程阻塞效率较低,但数据不会丢失 public static void publishMessageIndividually() throws Exception {
try (Channel channel = RabbitMqUtils.