当前位置: 首页 > news >正文

网站建好了 如何推广网站的留言功能

网站建好了 如何推广,网站的留言功能,网站专题页是什么,电子商务网站开发实务石道元本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现#xff0c;并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架#xff0c;帮助你快速开发可扩展、高效的分布式系统。 目录 前言 服务注册和发现 服务注册 ​编辑 … 本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架帮助你快速开发可扩展、高效的分布式系统。 目录 前言 服务注册和发现 服务注册 ​编辑 服务发现 OpenFeign 快速入门 总结 前言 本篇博客将通过实例演示如何在 Spring Cloud 中使用 Nacos 实现服务注册与发现并使用 OpenFeign 进行服务间调用。你将学到如何搭建一个完整的微服务通信框架帮助你快速开发可扩展、高效的分布式系统。 服务注册和发现 服务注册 服务注册步骤如下 1引入nacos discovery依赖 !--nacos 服务注册发现-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency 2配置Nacos地址 spring:application:name:item-service#服务名称cloud:nacos:server-addr:虚拟机地址:8848#nacos地址我的nacos部署在虚拟机里面 在item-service模块中添加依赖 在item-service的application.yaml配置nacos地址 为多个服务测试需要再配置一个item-service实例 配置启动项需重命名和配置端口号 访问nacos的服务管理就可以发现注册成功呢 服务发现 消费者需要连接nacos以拉取和订阅服务因此服务发现的前两步与服务注册是一样后面再加上服务调用即可: 1 引入nacos discovery依赖 ... 2配置nacos地址 ... 3服务发现 private final DiscoveryClient discoveryclient;private void handleCartItems(ListCartV0vos){//1.根据服务名称拉取服务的实例列表ListServiceInstanceinstances discoveryclient.getInstances(item-service);//2.负载均衡挑选一个实例ServiceInstance instance instances.get(RandomUtil.randomInt(instances.size()));//3.获取实例的TP和端口URI uri instance.getUri();略... } 将nacos依赖导入cart-service模块 在cart-service的application.yaml文件中配置nacos地址 修改购物车模块中的查询商品信息功能 package com.hmall.cart.service.impl;import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hmall.cart.domain.dto.CartFormDTO; import com.hmall.cart.domain.dto.ItemDTO; import com.hmall.cart.domain.po.Cart; import com.hmall.cart.domain.vo.CartVO; import com.hmall.cart.mapper.CartMapper; import com.hmall.cart.service.ICartService; import com.hmall.common.exception.BizIllegalException; import com.hmall.common.utils.BeanUtils; import com.hmall.common.utils.CollUtils; import com.hmall.common.utils.UserContext;import lombok.RequiredArgsConstructor; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate;import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors;/*** p* 订单详情表 服务实现类* /p**/ Service RequiredArgsConstructor public class CartServiceImpl extends ServiceImplCartMapper, Cart implements ICartService {private final RestTemplate restTemplate;private final DiscoveryClient discoveryClient;private void handleCartItems(ListCartVO vos) {// 1.获取商品idSetLong itemIds vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());// 2.查询商品//根据服务名称获取服务的实例列表ListServiceInstance instances discoveryClient.getInstances(item-service);if(CollUtils.isEmpty(instances)){return;}//手写负载均衡ServiceInstance instance instances.get(RandomUtil.randomInt(instances.size()));//利用restTemolate发起http请求得到http的响应ResponseEntityListItemDTO response restTemplate.exchange(instance.getUri()/items?ids{ids},HttpMethod.GET,null,new ParameterizedTypeReferenceListItemDTO() {},Map.of(ids, CollUtils.join(itemIds, ,)));//解析响应if(!response.getStatusCode().is2xxSuccessful()){//查询失败直接结束return;}ListItemDTO items response.getBody();if (CollUtils.isEmpty(items)) {return;}// 3.转为 id 到 item的mapMapLong, ItemDTO itemMap items.stream().collect(Collectors.toMap(ItemDTO::getId, Function.identity()));// 4.写入vofor (CartVO v : vos) {ItemDTO item itemMap.get(v.getItemId());if (item null) {continue;}v.setNewPrice(item.getPrice());v.setStatus(item.getStatus());v.setStock(item.getStock());}} ...} OpenFeign 快速入门 利用Nacos现了服务的治理利用RestTemplate实现了服务的远程调用。但是远程调用的代码太复杂了我们可以通过OpenFeign组件来让操作更加简单。 OpenFeign是一个声明式的http客户端是SpringCloud在Eureka公司开源的Feign基础上改造而来。官方地址:https://github.com/openFeign/feign 其作用就是基于SpringMVC的常见注解帮我们优雅的实现http请求的发送。 OpenFeign已经被SpringCloud自动装配实现起来非常简单: 1引入依赖包括OpenFeign和负载均衡组件SpringCloudLoadBalancer !--OpenFeign-- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency !--负载均衡-- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId /dependency 2通过EnableFeignClients注解启用OpenFeign功能 EnableFeignclients SpringBootApplication public class cartApplication{//...略} OpenFeign已经被SpringCloud自动装配实现起来非常简单: 3编写FeignClient FeignClient(value item-service) public interface Itemclient{GetMapping(/items)ListItemDT0queryItemByIds(RequestParam(ids)CollectionLong ids); } 4使用FeignClient实现远程调用 ListItemDTOitems itemclient.queryItemByIds(List.of(1,2,3)); 在cart-service模块的pom.xml文件中导入依赖 在CartApplication启动类上加EnableFeignClients注解开启OpenFeign 编写ItemClient接口 package com.hmall.cart.client;import com.hmall.cart.domain.dto.ItemDTO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam;import java.util.List;FeignClient(item-service)public interface ItemClient {GetMapping(/items)ListItemDTO queryItemsByIds(RequestParam(id) CollectionLong ids); }修改购物车中的查询物品信息功能 Service RequiredArgsConstructor public class CartServiceImpl extends ServiceImplCartMapper, Cart implements ICartService {private final ItemClient itemClient; private void handleCartItems(ListCartVO vos) {// 1.获取商品idSetLong itemIds vos.stream().map(CartVO::getItemId).collect(Collectors.toSet());// 2.查询商品Client.queryItemsByIds(itemIds);if (CollUtils.isEmpty(items)) {return;}// 3.转为 id 到 item的mapMapLong, ItemDTO itemMap items.stream().collect(Collectors.toMap(ItemDTO::getId, Function.identity()));// 4.写入vofor (CartVO v : vos) {ItemDTO item itemMap.get(v.getItemId());if (item null) {continue;}v.setNewPrice(item.getPrice());v.setStatus(item.getStatus());v.setStock(item.getStock());}} 总结 通过本篇博客的学习我们了解了如何利用 Nacos 完成服务的注册与发现让微服务之间可以轻松互相找到彼此并进行通信。我们还探索了如何通过 OpenFeign 简化服务间的调用使得服务之间的交互更加便捷高效。 总结一下本篇博客的关键点 服务注册与发现通过 Nacos服务可以在启动时向 Nacos 注册自己其他服务可以通过 Nacos 查询并发现目标服务。服务调用借助 OpenFeign我们可以通过接口声明的方式来调用其他服务而不需要直接编写 HTTP 请求极大地提高了开发效率。分布式架构通过结合 Nacos 和 OpenFeign我们能够更加高效地构建微服务架构实现松耦合、灵活的服务间通信。
http://www.hkea.cn/news/14303114/

相关文章:

  • 北京做网站开发的公司机械门户网站建设特点
  • 做网站视频一般上传到哪里恶意点击竞价是用的什么软件
  • wordpress站标签也打不开信阳企业网站建设
  • 北京网站建设网络公司wordpress内容管理
  • 怎么建自己的网站?绩效管理网站开发
  • 港口建设网站营销内容包括哪些方面
  • 天津网站建设报价百度蜘蛛池自动收录seo
  • 上海易站网站建设手机版网站开发人员选项
  • 广东网站建设公司有哪些帮彩票网站做流量提升
  • 优秀企业门户网站建设网站建设软件公司
  • 网站加视频播放设计怎么做的知名网页设计公司
  • 建设局的证件在哪个网站查wordpress登录无效用户名
  • 全心代发17做网站浦口区网站建设经验丰富
  • 东莞网络推广百度seo网站优化服务
  • 学网站开发的软件软件推广网站
  • 指定网站建设前期规划方案游戏开发救世主
  • .net网站开发是什么对象开发上海网站jianshe
  • 旅游网站开发本科论文wordpress按颜色搜索
  • 郑州 高端网站建设网站建设 广州网站建设专业公司
  • 做网站编辑需要学什么软件公司怎么赚钱
  • 网站备案号显示红色织梦网站手机版端设置
  • 前端网站开发总结全媒体广告策划与营销
  • 可做设计任务的网站在线法律咨询免费
  • 外贸营销型网站策划中seo层面包括广东网站开发推荐
  • 国外网站阻止国内访问怎么做网站建设图标素材免费
  • 官方网站如何做广告推广哪个平台好
  • 浦西网站建设美叶设计网站
  • 江阴做网站哪家好徐州企业网站推广
  • 自己做的网站怎么维护专门做图表的网站
  • 各大网站投稿邮箱关键词优化排名