在上一篇 "《Spring Cloud Stream如何处理消息重复消费》" 中,我们通过消费组的配置解决了多实例部署情况下消息重复消费这一入门时的常见问题。本文将继续说说在另外一个被经常问到的问题:如果微服务生产的消息自己也想要消费一份,应该如何实现呢? + 常见错误 在放出标准答案前,先放出一个
拦截器的作用: 编写一个自定义的类,实现相关拦截器接口: preHandler不放行,直接return false:直接跳转到错误页面error.jsp postHandler后置处理器,也就是Controller方法执行完后就会执行的方法:preHandler是前置处理器。 最后拦截器: 多个拦截
Spring MVC异常处理流程: 提供构造方法传值: 配置异常处理器的bean
一旦服务阻塞就进行服务降级或线程隔离。要不然就会导致大面积服务的瘫痪,Hystrix就是干这个的,一出现不健康的服务就进行熔断,不阻塞后面线程的执行。 引入依赖: 加注解: 这三个注解可以用一个注解搞定: 当出现服务阻塞时,调用下面的方法: 将注解加在类上,进行统一处理,不然的话,每个方法上都要添加
引入依赖: 启动类上添加@EnableFeignClients注解: 写调用接口: 直接@Autowired注入服务调用接口: 底层使用了动态代理,对接口进行了实现。 并且封装了RestTemplate远程调用的代码。 测试: 搞定~ 补充知识点:
将10086注册到10087上: 再在10086服务的基础上复制一个Eureka的服务,端口为10087,将其注册到10086上: application-name的名称保持一致,只是一个服务的两个实例。 两个都启动: 10087: 10086: 如果有超过3台以上的集群,url的地址就是如下这种写
【Provider】 引依赖: 启动类上添加注解: 配置文件: 【Consumer】 引依赖: 加注解: 配置文件: 调用服务: 方式一(动
使用RestTemplate远程调用服务的弊端: Eureka注册中心: Eureka原理: 搭建Eureka服务 引pom 启动类: 启动类上要加上@EnableEurek
父pom: 服务提供方 pom: provider配置文件: provider启动类: provider实体类: provider Mapper: 内置了增删改查的方法 pro
Spring Cloud常用组件: 架构图: 版本对应关系:
@Bean注册一个RestTemplate: 调用服务: 因为要参与网络传输,所以要实现序列化接口:
单体式架构: 垂直拆分: 垂直拆分的特点: 分布式服务: 分布式服务的特点: SOA面向服务的架构: 服务治理: 微服务: 微服务结构: 服务调用方式: http客户端工具:
添加依赖: (Spring Data Redis) 启动redis: 配置文件中进行配置: redis基本使用思路: redis中不存在就查询数据库然后存入redis: 查看日志:
添加依赖: 在测试类上添加注解:
获取配置文件的内容——
注意:这种方式要提供属性的getter/setter方法—— 如果idea报错,提示没有相应的执行器,就需要在maven中添加: (虽然不配置代码
yml集合数据的表示方式: 这种方式是配置普通的字符串—— 如果集合中装的是对象,就这么配置—— 行内配置方式—— map的配置方式——
yml行内对象的配置方法,一般是采取 上面的缩进方式,我只想配置在一行怎么处?——
当我们使用Spring Cloud Ribbon实现客户端负载均衡的时候,通常都会利用@LoadBalanced来让RestTemplate具备客户端负载功能,从而实现
配置文件的加载顺序, 后加载的会覆盖先加载的:也就是properties配置文件的内容会替换掉.yml及.yaml文件的内容
最终效果: 日志查询流程分析: Controller代码: Mapper:
日志Bean的设计: 类名及方法名:
通过Security获取访问者用户名: 也可以通过session来获取: 整体思路:
获取类及方法上的@RequestMapping注解: 应该是不等于: 获取访问者的ip地址,首先配置一个监听器: 配置完监听器后,就可以在类中注入一个HttpServletRequest: 获取ip:
前置通知:获取访问的类,访问的方法,带参数和不带参数的 日志表信息描述字段: 获取访问时长:
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号