[optimization] 通义千问代码优化02

This commit is contained in:
W.Y 2023-10-09 21:06:12 +08:00
parent fc2e12b51c
commit d8cc24675f

View File

@ -13,6 +13,9 @@ import org.springframework.data.redis.core.ReactiveStringRedisTemplate;
import org.springframework.data.redis.core.ReactiveValueOperations; import org.springframework.data.redis.core.ReactiveValueOperations;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -20,59 +23,62 @@ import java.util.*;
import java.util.function.Function; import java.util.function.Function;
@Slf4j @Slf4j
@Service @RestController
@RequestMapping("/aaaa")
public class QWenService { public class QWenService {
@Resource @Resource
private ReactiveStringRedisTemplate reactiveStringRedisTemplate; private ReactiveStringRedisTemplate reactiveStringRedisTemplate;
public Mono<QWenReplyRequest> communication(TongYiCommunicationRest rest){ @PostMapping("/aaa")
public Mono<QWenReplyRequest> communication(TongYiCommunicationRest rest) {
ReactiveValueOperations<String, String> operations = reactiveStringRedisTemplate.opsForValue(); ReactiveValueOperations<String, String> operations = reactiveStringRedisTemplate.opsForValue();
return operations.get(RedisConstans.TY_QUEUE_LIST+rest.getOnlyId()).defaultIfEmpty("").flatMap(res -> { return operations.get(RedisConstans.TY_QUEUE_LIST + rest.getOnlyId()).defaultIfEmpty("").flatMap(res -> {
JSONArray objects = JSONArray.parseArray(res); JSONArray objects = JSONArray.parseArray(res);
List<TongYiCommunicationRest> list = new LinkedList<>(); List<TongYiCommunicationRest> list = new LinkedList<>();
try { try {
if (!ObjectUtils.isEmpty(objects)){ if (!ObjectUtils.isEmpty(objects)) {
list = JSONObject.parseArray(res, TongYiCommunicationRest.class); list = JSONObject.parseArray(res, TongYiCommunicationRest.class);
if (rest.getIsWhiteList() == 0) { if (rest.getIsWhiteList() == 0) {
//是白名单,插入头部 //是白名单,插入头部
log.info("收到白名单对应信息,接收参数为:{}", rest); log.info("收到白名单对应信息,接收参数为:{}", rest);
list.add(0,rest); list.add(0, rest);
} }
} }
//不是白名单插入尾部 //不是白名单插入尾部
list.add(rest); list.add(rest);
operations.set(RedisConstans.TY_QUEUE_LIST+rest.getOnlyId(), JSONArray.toJSONString(list)).subscribe(); operations.set(RedisConstans.TY_QUEUE_LIST + rest.getOnlyId(), JSONArray.toJSONString(list)).subscribe();
//通知Redis让Redis进行消费 //通知Redis让Redis进行消费
HashMap<String, Object> map = new HashMap<>(); HashMap<String, Object> map = new HashMap<>();
map.put("task_type", "qwen"); map.put("task_type", "qwen");
map.put("text", rest.getText()); map.put("text", rest.getText());
return httpTY(map); return httpTY(map);
}catch (Exception e){ } catch (Exception e) {
log.error("调用异常:"); log.error("调用异常:");
return Mono.just(new QWenReplyRequest()); return Mono.just(new QWenReplyRequest());
}finally { } finally {
reactiveStringRedisTemplate.delete(RedisConstans.TY_QUEUE_LIST+rest.getOnlyId()).subscribe(); reactiveStringRedisTemplate.delete(RedisConstans.TY_QUEUE_LIST + rest.getOnlyId()).subscribe();
} }
}); });
} }
public static Mono<QWenReplyRequest> httpTY(HashMap<String, Object> map){ public static Mono<QWenReplyRequest> httpTY(HashMap<String, Object> map) {
return WebClientUtils.post("http://192.168.8.211:5010/qg_human/qwen", new JSONObject(map)).flatMap(jsonObject -> { return WebClientUtils.post("http://192.168.8.211:5010/qg_human/qwen", new JSONObject(map)).flatMap(jsonObject -> {
long time = new Date().getTime(); long time = new Date().getTime();
QGResponse qgResponse = jsonObject.toJavaObject(QGResponse.class); QGResponse qgResponse = jsonObject.toJavaObject(QGResponse.class);
QWenReplyRequest data = (QWenReplyRequest) qgResponse.getData(); QWenReplyRequest data = new QWenReplyRequest();
log.info("发起TY请求,响应时间时间为:{}", new Date().getTime()-time); log.info("发起TY请求,响应时间时间为:{}", new Date().getTime() - time);
if (qgResponse.getStatusCode() == 0) { if (qgResponse.getStatusCode() == 0) {
data = JSONObject.parseObject(qgResponse.getData().toString(), QWenReplyRequest.class);
//成功 //成功
log.info("通知成功:"+ qgResponse.getData()); log.info("通知成功:" + qgResponse.getData());
data.setCode(200); data.setCode(200);
return Mono.just(data); return Mono.just(data);
} }
//失败 //失败
log.info("通知失败:"+ map); log.info("通知失败:" + map);
data.setCode(500); data.setCode(500);
return Mono.just(data); return Mono.just(data);
}); });
@ -83,9 +89,8 @@ public class QWenService {
map.put("task_type", "qwen"); map.put("task_type", "qwen");
map.put("text", "你好"); map.put("text", "你好");
try { try {
Mono<QWenReplyRequest> qgResponseMono = httpTY(map); httpTY(map);
System.out.println(qgResponseMono.block()); } catch (Exception e) {
}catch (Exception e) {
log.info("异常:{}", e); log.info("异常:{}", e);
} }