客户管理软件免费版哪个好用临沂seo优化
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:34
当前位置: 首页 > news >正文
客户管理软件免费版哪个好用,临沂seo优化,wordpress每次都要ftp,wordpress推广链接问题#xff1a;在微服务中#xff0c;每个项目是隔离开的#xff0c;当有一个项目请求其他项目中的数据时#xff0c;必须发起网络请求#xff0c;本文即对此问题展开讨论。
1.使用restTemplate发送请求 //发送请求ResponseEntityListItemDTO response …问题在微服务中每个项目是隔离开的当有一个项目请求其他项目中的数据时必须发起网络请求本文即对此问题展开讨论。
1.使用restTemplate发送请求 //发送请求ResponseEntityListItemDTO response restTemplate.exchange(http://localhost:8081/items?ids{ids},HttpMethod.GET,null,new ParameterizedTypeReferenceListItemDTO() {},Map.of(ids, CollUtil.join(itemIds, ,)));//解析响应体判断是否成功发送if (!response.getStatusCode().is2xxSuccessful()){return;}ListItemDTO items response.getBody();
在程序中注入类时可以不用Autowired注解直接定义变量必须用final修饰在类上加上RequiredArgsConstructor注解即可实现自动装配。
2.使用nacos实现远程调用
问题restTemplate中代码中的路径是写死的若一个服务有多个实例只能访问到一个无法做到负载均衡。
1.注册中心原理 2.nacos注册中心
将nacos部署到docker中。
3.服务注册
服务在启动时将自己的信息提交到nacos此为服务注册。
1.添加依赖
!–nacos 服务注册发现–
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency
2.在配置文件中中添加nacos地址配置
spring:application:name: item-service # 服务名称cloud:nacos:server-addr: 192.168.145.129:8848 # nacos地址
操作完后就已经完成了服务的注册。
ps:当我们要启动一个项目的多个实例需要在idea中按alt8出现如下界面点击复制配置 如此配置即可将同一项目的多个实例配置在不同的端口中此配置优先级大于项目中的yaml配置文件。
4.服务发现
服务发现为服务的调用者去拉取别的服务的列表。
1.添加依赖
!–nacos 服务注册发现–
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency
2.在配置文件中中添加nacos地址配置
spring:application:name: item-service # 服务名称cloud:nacos:server-addr: 192.168.145.129:8848 # nacos地址
3.配置好后即可去调用别的服务
若一个服务有好几个实例那么可以使用负载均衡的算法从多个实例中挑选一个去访问。
常见的负载均衡算法有 随机 轮询 IP的hash 最近最少访问
首先注入DiscoveryClient
private final DiscoveryClient discoveryClient;
调用nacos发起请求 //利用nacos发送请求访问,获取实例 ListServiceInstance instances discoveryClient.getInstances(item-service);//使用随机的算法从实例中挑选一个实例 ServiceInstance instance instances.get(RandomUtil.randomInt(instances.size()));// 2.查询商品ListItemDTO items itemService.queryItemByIds(itemIds);//发送请求ResponseEntityListItemDTO response restTemplate.exchange(instance.getUri()/items?ids{ids},HttpMethod.GET,null,new ParameterizedTypeReferenceListItemDTO() {},Map.of(ids, CollUtil.join(itemIds, ,)));//解析响应体if (!response.getStatusCode().is2xxSuccessful()){return;}ListItemDTO items response.getBody();
3.OpenFeign
问题使用nacos和restTemplate发送请求操作仍然过于繁琐因此需要使用openfeign。
OpenFeign是一个声明式的http客户端是SpringCloud在Eureka公司开源的Feign基础上改造而来。官方地址GitHub - OpenFeign/feign: Feign makes writing java http clients easier
其作用就是基于SpringMVC的常见注解帮我们优雅的实现http请求的发送。
1.基本使用
1.导入依赖 !–openFeign–dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency!–负载均衡器–dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency
2.在启动类上加上注解EnableFeignClients ps:当定义的FeignClient不在SpringBootApplication的扫描包范围时这些FeignClient无法使用。
当定义的FeignClient在另一个项目中即使在项目中引入了pom文件有这个类型但是没有这个bean因为在项目中spring扫描的包是本项目的文件因此就接收不到这个bean。
有两种方式解决
方式一指定FeignClient所在包
EnableFeignClients(basePackages com.hmall.api.clients)方式二指定FeignClient字节码
EnableFeignClients(clients {UserClient.class})3.定义接口编写代码
FeignClient(item-service)
public interface ItemClient {GetMapping(/items)ListItemDTO queryItemByids(RequestParam(ids) CollectionLong ids);
}FeignClient(item-service) 声明服务名称 GetMapping 声明请求方式 GetMapping(/items) 声明请求路径 RequestParam(ids) CollectionLong ids 声明请求参数 ListItemDTO 返回值类型
4.当项目需要发起请求时即可导入ItemClient类调用方法实现。
2.连接池
问题openfeign使用的HttpURLConnection效率太低。
OpenFeign其底层发起http请求依赖于其它的框架。这些框架可以自己选择包括以下三种 HttpURLConnection默认实现不支持连接池 Apache HttpClient 支持连接池 OKHttp支持连接池
此处使用okhttp替换默认的。
1.引入依赖
!–ok-http–
dependencygroupIdio.github.openfeign/groupIdartifactIdfeign-okhttp/artifactId
/dependency2.开启连接池功能
feign:okhttp:enabled: true # 开启OKHttp连接池支持
3.日志
OpenFeign只会在FeignClient所在包的日志级别为DEBUG时才会输出日志。而且其日志级别有4级 NONE不记录任何日志信息这是默认值。 BASIC仅记录请求的方法URL以及响应状态码和执行时间 HEADERS在BASIC的基础上额外记录了请求和响应的头信息 FULL记录所有请求和响应的明细包括头信息、请求体、元数据。
由于Feign默认的日志级别就是NONE所以默认我们看不到请求日志。
1.要自定义日志级别需要声明一个类型为Logger.Level的Bean在其中定义日志级别
public class defaultfeignconfig {Beanpublic Logger.Level feignconfig(){return Logger.Level.FULL;}
}2.1 局部配置
但此时这个Bean并未生效要想配置某个FeignClient的日志可以在FeignClient注解中声明
FeignClient(value item-service, configuration DefaultFeignConfig.class) 2.2 全局配置
如果想要全局配置让所有FeignClient都按照这个日志配置则需要在EnableFeignClients注解中声明
EnableFeignClients(defaultConfiguration myDefaultFeignConfig.class)
- 上一篇: 克隆网站模板wordpress 标题 插件
- 下一篇: 客户网站分析哈尔滨开发公司
相关文章
-
克隆网站模板wordpress 标题 插件
克隆网站模板wordpress 标题 插件
- 技术栈
- 2026年03月21日
-
克拉玛依建设局官方网站中国建设银行app下载官网
克拉玛依建设局官方网站中国建设银行app下载官网
- 技术栈
- 2026年03月21日
-
可做外贸的网站有哪些西安建网站
可做外贸的网站有哪些西安建网站
- 技术栈
- 2026年03月21日
-
客户网站分析哈尔滨开发公司
客户网站分析哈尔滨开发公司
- 技术栈
- 2026年03月21日
-
客似云来网站建设app永久免费封装平台
客似云来网站建设app永久免费封装平台
- 技术栈
- 2026年03月21日
-
课程平台网站建设报价官网站站
课程平台网站建设报价官网站站
- 技术栈
- 2026年03月21日


