12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package com.yaozhitech.spring5.service.impl;
- import java.io.IOException;
- import java.net.URI;
- import java.util.List;
- import org.springframework.cloud.gateway.route.RouteDefinition;
- import org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.stereotype.Service;
- import com.fasterxml.jackson.core.type.TypeReference;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.yaozhitech.spring5.form.FilterDefinition;
- import com.yaozhitech.spring5.form.GatewayRoute;
- import com.yaozhitech.spring5.form.PredicateDefinition;
- import lombok.extern.slf4j.Slf4j;
- @Service
- @Slf4j
- public class GatewayRouteService {
- private static final String GATEWAY_ROUTES = "gateway_routes::";
-
- private RedisTemplate redisTemplate;
- // @CreateCache(name = GATEWAY_ROUTES, cacheType = CacheType.REMOTE)
- // private Cache<String, RouteDefinition> gatewayRouteCache;
- //
- // @Autowired
- // private EventSender eventSender;
- public boolean add(GatewayRoute gatewayRoute) {
- // boolean isSuccess = this.save(gatewayRoute);
- // 转化为gateway需要的类型,缓存到redis, 并事件通知各网关应用
- RouteDefinition routeDefinition = gatewayRouteToRouteDefinition(gatewayRoute);
-
- redisTemplate.opsForValue().set(gatewayRoute.getRouteId(), routeDefinition);
- // eventSender.send(BusConfig.ROUTING_KEY, routeDefinition);
- return true;
- }
- // public boolean delete(String id) {
- // GatewayRoute gatewayRoute = this.getById(id);
- // // 删除redis缓存, 并事件通知各网关应用
- // gatewayRouteCache.remove(gatewayRoute.getRouteId());
- // eventSender.send(BusConfig.ROUTING_KEY, gatewayRouteToRouteDefinition(gatewayRoute));
- // return this.removeById(id);
- // }
- //
- // public boolean update(GatewayRoute gatewayRoute) {
- // boolean isSuccess = this.updateById(gatewayRoute);
- // // 转化为gateway需要的类型,缓存到redis, 并事件通知各网关应用
- // RouteDefinition routeDefinition = gatewayRouteToRouteDefinition(gatewayRoute);
- // gatewayRouteCache.put(gatewayRoute.getRouteId(), routeDefinition);
- // eventSender.send(BusConfig.ROUTING_KEY, routeDefinition);
- // return isSuccess;
- // }
- //
- /**
- * 将数据库中json对象转换为网关需要的RouteDefinition对象
- *
- * @param gatewayRoute
- * @return RouteDefinition
- */
- private RouteDefinition gatewayRouteToRouteDefinition(GatewayRoute gatewayRoute) {
- RouteDefinition routeDefinition = new RouteDefinition();
- routeDefinition.setId(gatewayRoute.getRouteId());
- routeDefinition.setOrder(gatewayRoute.getOrders());
- routeDefinition.setUri(URI.create(gatewayRoute.getUri()));
- ObjectMapper objectMapper = new ObjectMapper();
- try {
- routeDefinition.setFilters(objectMapper.readValue(gatewayRoute.getFilters(), new TypeReference<List<FilterDefinition>>() {
- }));
- routeDefinition.setPredicates(objectMapper.readValue(gatewayRoute.getPredicates(), new TypeReference<List<PredicateDefinition>>() {
- }));
- } catch (IOException e) {
- log.error("网关路由对象转换失败", e);
- }
- return routeDefinition;
- }
- //
- // public GatewayRoute get(String id) {
- // return this.getById(id);
- // }
- }
|