SpringCloud添加ai微服务(2)

1.给ai微服务添加到nacos注册中心

(1)进行服务的配置

首先要开启nacos服务,nacos就是服务的注册与发现。相似的还有zookeeper,eurekar。

在这里添加nacos的配置,我这里的地址是虚拟机里面的地址,我将nacos部署在虚拟机的docker容器里面。

(2)启动类添加注解

添加这个注解,以便nacos能够发现这个服务。

(3)确认注册成功

在第一个图中我的nacos的地址是192.168.40.133:8848。那么进入网站的地址就是http://192.168.40.133:8848/nacos/index.html

在这里我们就能看到名字叫ai-service的服务注册成功。

2.服务间的通信Openfeign

(1)完成服务的注册与发现之后就是进行服务之间的通信了,那么我们这里实现通信使用的是Openfeign。

@FeignClient这个注解里面的name就是你要链接对应微服务的注册名字。里面就可以调用这个对应服务Controller里面的接口了。

java 复制代码
package com.buka.feign;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;


@FeignClient(name = "ai-service")
public interface AiFeignService {
    //完全复制AI服务中Controller的接口定义
    @PostMapping("/ai/ollama/generate")
    String generateAi(@RequestBody String prompt);
}

(2)测试连接

其实这些到这里,我们就可以直接注入这个接口并实现调用了。接下来我就贴入我的完整测试代码。

Controller:

java 复制代码
package com.buka.controller;

import com.buka.service.AiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassName UserAiController
 * @Description TODO
 * @Author cgx
 * @Date 2025/9/4 上午12:29
 * @Version 1.0
 **/
@RestController
@RequestMapping("/userAi")
public class UserAiController {
    @Autowired
    private AiService aiService;

    @PostMapping("/test")
    public String test() {
        return aiService.getAnswer();
    }
}

service:

java 复制代码
package com.buka.service.impl;

import com.buka.feign.AiFeignService;
import com.buka.service.AiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @ClassName AiServiceImpl
 * @Description TODO
 * @Author cgx
 * @Date 2025/9/4 上午12:32
 * @Version 1.0
 **/
@Service
public class AiServiceImpl implements AiService {
    @Autowired
    private AiFeignService aiFeignService;

    @Override
    public String getAnswer() {
        return aiFeignService.generateAi("你好,不用进行深度思考");
    }
}

最后还是使用postman进行测试

3.备注

在使用调用ai微服务的时候会出现run time out的情况,这是由于调用ai的时候本地模型比较慢,会超时。解决方案有很多,比如更换小的模型,增加响应的时间。我们这里只进行测试学习,所以就增加响应时间。

这里更改ribbon的配置来实现

java 复制代码
ai-service:
  ribbon:
    # 连接超时(毫秒)
    ConnectTimeout: 5000
    # 读取超时(毫秒,根据实际需求调整,如120000=2分钟)
    ReadTimeout: 120000
    # 关闭所有操作的重试
    OkToRetryOnAllOperations: false
    # 同一服务的最大重试次数
    MaxAutoRetries: 0
    # 切换服务的最大重试次数
    MaxAutoRetriesNextServer: 0
相关推荐
那个松鼠很眼熟w2 小时前
4.Spring-Ai入门案例
java·人工智能·spring
抠脚小弟6 小时前
Spring Cache 使用详解:从入门到实战
java·spring
夏天拐跑了西瓜9 小时前
Spring Cloud 微服务实战(八):Hystrix熔断降级——从服务雪崩到断路器模式
spring cloud·hystrix·微服务
vHelios12 小时前
【电商项目】短信测试遇到的问题与解决方案:InaccessibleObjectException报错、单元测试通过但未接收到验证码
java·微服务
计算机学姐15 小时前
基于SpringBoot的高校爱心慈善管理系统
java·vue.js·spring boot·后端·spring·tomcat·mybatis
都叫我大帅哥15 小时前
Apache Tika 4.0 正式发布:RAG 时代文件解析的终极答案
java·spring boot·spring
天天喝旺仔15 小时前
gRPC 流式通信实战:从一元调用到双向流,吃透四种 RPC 模式(Go 版)
分布式·http·微服务·rpc·go
霸道流氓气质1 天前
Spring AI 输出解析器进阶
人工智能·windows·spring
野熊佩骑1 天前
Kubernetes实战系列文章(三) 之 K8S运维常用命令
linux·运维·docker·微服务·云原生·容器·kubernetes
leonkay1 天前
C# 锁机制——【2】深入原理
开发语言·后端·spring·c#·个人开发