# java-code **Repository Path**: qiyuan180101/java-code ## Basic Information - **Project Name**: java-code - **Description**: Java代码 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-10 - **Last Updated**: 2021-09-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # swagger的地址为 * http://XXXX:XXXX/swagger-ui/ # api-a * 测试本地apollo * 测试本地feign 待补充 # api-s-a * 测试本地 @Async 异步组件 * 测试本地 @Retryable 重试组件 # gateway * 各种自定义网关 # 动态路由规则 * 编写接口修改RouteDefinition信息如下,具体操作有新增、删除、更新 ```json { "metadata": { }, "filters": [ ], "uri": "https://blog.csdn.net", "predicates": [ { "args": { "pattern": "/csdn/**" }, "name": "Path" } ], "id": "csdn", "order": 0 } ``` * Redis发布/订阅模式去刷新路由——通道建立,消息发布 ```java /** * 定义通道队列, * RedisMessageReceiver 所有节点执行发布的任务,相当于订阅者执行器 * @param connectionFactory * @param listener * @return */ @Bean public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, RedisMessageReceiver listener) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //Redis数据同步至本地文件,广播模式 container.addMessageListener(listener, new ChannelTopic(Constant.REDIS_CHANNEL_TOPIC)); return container; } /** * RedisUtil中执行新增方法 * 向Redis中发布消息方法 * * @param */ public void sendMsg(String msg) { redisTemplate.execute(c -> c.publish(StrUtil.bytes(Constant.REDIS_CHANNEL_TOPIC), StrUtil.bytes(msg)), true); } /** * 执行发送刷新消息 * * @return */ @GetMapping("/refresh") public String refresh(String msg) { redisUtils.sendMsg(msg); return "ok"; } ``` * Redis发布/订阅模式去刷新路由——订阅消息方处理消息 ```java /** * * 客户端监听订阅的topic,当有消息的时候,会触发该方法 * 消息接收器 */ @Component @Slf4j public class RedisMessageReceiver implements MessageListener { @Autowired private SyncRouteFileService syncRouteFileService; @Override public void onMessage(Message message, @Nullable byte[] pattern) { log.info("执行同步数据(RedisToFile)开始"); byte[] bytes = message.getBody(); String body = StrUtil.str(bytes, Charset.defaultCharset()); String ps = StrUtil.str(pattern, Charset.defaultCharset()); log.info("获取到消息={},pattern={}", body, ps); syncRouteFileService.syncRouteFile(); log.info("执行同步数据(RedisToFile)结束"); } } ```