集群插件
# 应用场景
对于同一个应用部署了多套的情况下,可能出现接口不同步的问题。因为magic-api
在启动之后,接口信息全部缓存在内存中,新增也如此,所以对于其他机器是不知道有接口变动的,解决这个问题需要将变更信息同步到其他机器,所以有了这个集群插件。
# 引入依赖
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-plugin-cluster</artifactId>
<version>magic-api-lastest-version</version>
</dependency>
提示
默认情况下,集群插件依赖于redis
插件,引入cluster
插件后,将自动引入redis
插件
# 配置
magic-api:
instanceId: .... #实例ID,集群环境下,要保证每台机器不同。默认启动后随机生成uuid,如无特殊情况可不配置。
cluster:
channel: magic-api:notify:channel #redis 通道,此值为默认值
# 配置Redis
spring:
redis:
host: 192.168.1.29
port: 6379
database: 4
password: 123456
# 自定义通知
在不想依赖Redis
的情况下,可以自行实现推送通知,主要目的是告诉集群环境中其它机器数据有变动,用于更新
@Bean
public MagicNotifyService magicNotifyService() {
// 此处代码自行更换
return magicNotify -> stringRedisTemplate.convertAndSend(config.getChannel(), Objects.requireNonNull(JsonUtils.toJsonString(magicNotify)));
}
在接收到变动通知后,需调用MagicAPIService.processNotify
的方法用于处理通知
@Autowired
MagicAPIServiec service;
service.processNotify(JsonUtils.readValue(message.getBody(), MagicNotify.class))
上次更新: 2023-03-23 13:11:51