feat:(REQ-2720) 增加消费apiSix操作旧菜单树的事件更新缓存
This commit is contained in:
parent
7aa3615cc3
commit
9e49be1100
@ -99,6 +99,24 @@ public class RocketMQEventConfiguration {
|
||||
}
|
||||
}
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@RocketMQMessageListener(topic = "topic_apisix_plat_${spring.profiles.active}",
|
||||
consumerGroup = "GID_topic_apisix_plat_${spring.application.name}_${spring.profiles.active}",
|
||||
consumeMode = ConsumeMode.ORDERLY,
|
||||
nameServer = "${rocketmq.name-server}"
|
||||
)
|
||||
public static class ApiSixPlatListener extends BaseListener implements RocketMQListener<MessageExt> {
|
||||
|
||||
@Autowired
|
||||
private EventConsumer eventConsumer;
|
||||
|
||||
@Override
|
||||
public void onMessage(MessageExt message) {
|
||||
super.onEvent(message, eventConsumer);
|
||||
}
|
||||
}
|
||||
|
||||
@Bean
|
||||
EventHandlerRepository eventHandlerRepository() {
|
||||
return new EventHandlerRepository((ex, logText) -> {
|
||||
|
||||
@ -0,0 +1,85 @@
|
||||
package cn.axzo.tyr.server.event.outer;
|
||||
|
||||
import cn.axzo.framework.rocketmq.Event;
|
||||
import cn.axzo.framework.rocketmq.EventConsumer;
|
||||
import cn.axzo.tyr.client.model.enums.DelegatedType;
|
||||
import cn.axzo.tyr.server.event.payload.SaasFeatureDeletedPayload;
|
||||
import cn.axzo.tyr.server.event.payload.SaasFeatureUpsertPayload;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeature;
|
||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 缓存全量权限点,因为鉴权等逻辑,需要查询免授权和权限点是否存在,数据量大,数据库压力大
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class CacheSaasFeatureOldHandler implements InitializingBean {
|
||||
|
||||
@Autowired
|
||||
private EventConsumer eventConsumer;
|
||||
@Autowired
|
||||
private SaasFeatureDao saasFeatureDao;
|
||||
@Autowired
|
||||
private SaasFeatureResourceService saasFeatureResourceService;
|
||||
|
||||
public void onSaasFeatureUpserted(Event event, EventConsumer.Context context) {
|
||||
log.info("begin cached saasFeature handler rocketmq event: {}", event);
|
||||
SaasFeatureUpsertPayload payload = event.normalizedData(SaasFeatureUpsertPayload.class);
|
||||
|
||||
if (StringUtils.isBlank(payload.getTerminal())) {
|
||||
return;
|
||||
}
|
||||
cacheFeature(payload.getTerminal());
|
||||
log.info("end cached saasFeature handler rocketmq event: {}", event);
|
||||
}
|
||||
|
||||
public void onSaasFeatureDeleted(Event event, EventConsumer.Context context) {
|
||||
log.info("begin cached saasFeature handler rocketmq event: {}", event);
|
||||
SaasFeatureDeletedPayload payload = event.normalizedData(SaasFeatureDeletedPayload.class);
|
||||
|
||||
if (StringUtils.isBlank(payload.getTerminal())) {
|
||||
return;
|
||||
}
|
||||
|
||||
cacheFeature(payload.getTerminal());
|
||||
|
||||
log.info("end cached saasFeature handler rocketmq event: {}", event);
|
||||
}
|
||||
|
||||
private void cacheFeature(String terminal) {
|
||||
List<SaasFeatureResourceService.SaasFeatureResourceCache> saasFeatures = saasFeatureDao.lambdaQuery()
|
||||
.eq(SaasFeature::getTerminal, terminal)
|
||||
.list()
|
||||
.stream()
|
||||
.map(e -> SaasFeatureResourceService.SaasFeatureResourceCache.builder()
|
||||
.featureId(e.getId())
|
||||
.notAuth(DelegatedType.notAuth(e.getDelegatedType()))
|
||||
.build())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
SaasFeatureResourceService.SaasFeatureResourceDTO saasFeatureResourceDTO = SaasFeatureResourceService.SaasFeatureResourceDTO.builder()
|
||||
.terminal(terminal)
|
||||
.features(saasFeatures)
|
||||
.build();
|
||||
SaasFeatureResourceService.StoreSaasFeatureResourceCache storeSaasFeatureResourceCache = SaasFeatureResourceService.StoreSaasFeatureResourceCache.builder()
|
||||
.saasFeatureResources(Lists.newArrayList(saasFeatureResourceDTO))
|
||||
.build();
|
||||
saasFeatureResourceService.storeCache(storeSaasFeatureResourceCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
eventConsumer.registerHandler(EventTypeEnum.SAAS_FEATURE_UPSERT.getEventCode(), this::onSaasFeatureUpserted);
|
||||
eventConsumer.registerHandler(EventTypeEnum.SAAS_FEATURE_DELETED.getEventCode(), this::onSaasFeatureDeleted);
|
||||
}
|
||||
}
|
||||
@ -12,6 +12,8 @@ import lombok.Getter;
|
||||
public enum EventTypeEnum {
|
||||
|
||||
SERVICE_PKG_PRODUCT_CREATED("service-pkg-product", "service-pkg-product-created", "创建服务包的产品"),
|
||||
SAAS_FEATURE_UPSERT("saas-feature", "saas-feature-upsert", "旧菜单树更新"),
|
||||
SAAS_FEATURE_DELETED("saas-feature", "saas-feature-deleted", "旧菜单树删除"),
|
||||
;
|
||||
|
||||
EventTypeEnum(String model, String name, String desc) {
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
package cn.axzo.tyr.server.event.payload;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SaasFeatureDeletedPayload implements Serializable {
|
||||
|
||||
private Long id;
|
||||
|
||||
private String terminal;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user