学习微服务nacos遇到的问题

在学习微服务注册到nacos的时候,所有过程都正确了,注册也成功了,但是访问不了调用的地址报错出现问题。

一、引入依赖

在cloud-demo父工程的pom文件中的<dependencyManagement>中引入SpringCloudAlibaba的依赖

1、springboot

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.4</version>
        <relativePath/>
    </parent>

2、springCloud

根据对应springboot版本找队友springcloud版本,点击下面链接

Spring Cloud

c3e930db93044c44820cbd21334dc37a.png

d1e4aa6624e34310915b25ebd79703d5.png

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>2023.0.1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

3、nacos的管理依赖

可以在这里看对应版本信息GitCode - 开发者的代码家园

            <!--nacos的管理依赖-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2022.0.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

版本信息都对应上。

4、引入nacos-discovery依赖

在user-service和order-service中的pom文件中引入nacos-discovery依赖:

  可以在这边对应找maven版本,但是默认和parent的版本一致,对应即可https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

 注意:不要忘了注释掉eureka的依赖。

 二、配置nacos地址

在user-service和order-service的application.yml中添加nacos地址:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848

注意:不要忘了注释掉eureka的地址

三、重启项目

重启微服务后,登录nacos管理页面,可以看到微服务信息:

539481c7bfa54ea3ada0dff3c8b89c42.png

这些都成功实现。

四、出现的问题

当我在浏览器搜索http://localhost:8080/order/102这个地址想看看结果是否也能成功出现,但是出现问题。

ba4f2b623d604e1299d8a77ca404c8b8.png

在idea里面报以下错误。

文字描述(方便搜索出来):04-16 23:34:03:092 ERROR 31032 --- [orderservice] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://userservice/user/2": userservice] with root cause

1d958d51123247fbbf30a6b30769770d.png

对应的service:

@Service
public class OrderService {

    @Autowired
    private OrderMapper orderMapper;

    @Autowired
    private RestTemplate restTemplate;
    public Order queryOrderById(Long orderId) {
        // 1.查询订单
        Order order = orderMapper.findById(orderId);
        //2.利用RestTemplate发起http请求,查询用户
        //2.1 url路径
//        String url="http://localhost:8081/user/"+order.getUserId();
        //用服务名代替ip端口
        String url="http://userservice/user/"+order.getUserId();
        //2.2 发起http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        //3.封装user到order
        order.setUser(user);
        // 4.返回
        return order;
    }
}

五、解决问题

在经过几个小时的搜索和看弹幕,我锁定在应该是负载均衡那边没有成功。

在order的启动类上我加了@LoadBalanced这个注解,但是缺少一个maven坐标

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    /**
     * 创建RestTemplate对象,并注入Spring容器中
     * @return
     */
    @Bean
    @LoadBalanced//负载均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}

以下是需要添加的maven坐标

        <!-- nacos配置管理依赖包 -->
        <!--负载均衡-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

 加入坐标后,重新编译运行。

a2e0dcd9a15844158de9c23c3cf3b6fd.png

 也是成功解决问题。

 

相关推荐

  1. 服务项目遇到问题

    2024-04-22 23:10:01       56 阅读
  2. 服务组件Nacos学习(1)

    2024-04-22 23:10:01       64 阅读
  3. 服务组件Nacos学习(2)

    2024-04-22 23:10:01       57 阅读
  4. Nacos:发现服务未来

    2024-04-22 23:10:01       53 阅读
  5. M1芯片MAC 安装MySQL、Nacos遇到问题

    2024-04-22 23:10:01       62 阅读
  6. 学习Spark遇到问题

    2024-04-22 23:10:01       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 23:10:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 23:10:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 23:10:01       87 阅读
  4. Python语言-面向对象

    2024-04-22 23:10:01       96 阅读

热门阅读

  1. 【Spring】@Scheduled 定时器注解使用

    2024-04-22 23:10:01       40 阅读
  2. iOS知识点 ---- 离屏渲染

    2024-04-22 23:10:01       34 阅读
  3. CentOS常见命令详解

    2024-04-22 23:10:01       40 阅读
  4. vueelementui+tabs选项卡样式更改-内容待递增

    2024-04-22 23:10:01       35 阅读
  5. 安卓平台下OkHttp3网络库的全面探讨与实践

    2024-04-22 23:10:01       37 阅读
  6. python selenium 获取伪类

    2024-04-22 23:10:01       39 阅读
  7. SCP收容物081~09

    2024-04-22 23:10:01       36 阅读
  8. 设计模式详解(十五)——模板方法模式

    2024-04-22 23:10:01       42 阅读
  9. git 简单使用

    2024-04-22 23:10:01       33 阅读
  10. php ArrayAccess

    2024-04-22 23:10:01       37 阅读
  11. 乾坤微前端js沙箱机制

    2024-04-22 23:10:01       34 阅读