| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- package jnpf.handler;
- import com.alibaba.fastjson.JSON;
- import jnpf.consts.ProjectEventConst;
- import jnpf.consts.RedisConst;
- import jnpf.module.ProjectEvent;
- import jnpf.event.ProjectEventSender;
- import jnpf.properties.EventProperty;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.data.redis.core.RedisTemplate;
- import java.util.Objects;
- /**
- * 自定义事件发布 Redis渠道
- */
- @Slf4j
- public class ProjectEventRedisSender implements ProjectEventSender {
- private RedisTemplate redisTemplate;
- private EventProperty eventProperties;
- public ProjectEventRedisSender(RedisTemplate redisTemplate, EventProperty eventProperties) {
- this.redisTemplate = redisTemplate;
- this.eventProperties = eventProperties;
- }
- @Override
- public void send(ProjectEvent event) {
- String channel = event.getChannel();
- // channel 加上指定前缀
- if(Objects.equals(eventProperties.getRedisPublishType(), ProjectEventConst.REDIS_PUBLISH_TYPE_ALL)){
- // 订阅同一个Redis里的所有消息
- channel = ProjectEventConst.DEFAULT_CHANNEL_PREFIX + channel;
- }else{
- // 只订阅当前配置的库索引
- channel = RedisConst.REDIS_EVENT_KEY + ProjectEventConst.DEFAULT_CHANNEL_PREFIX + channel;
- }
- redisTemplate.convertAndSend(channel, event);
- if (log.isDebugEnabled()) {
- log.debug("发送Redis自定义事件: {}", JSON.toJSONString(event));
- }
- }
- }
|