5 changed files with 191 additions and 34 deletions
-
5xm-core/src/main/java/com/xm/core/ctrl/XmProjectStateController.java
-
42xm-core/src/main/java/com/xm/core/service/cache/XmProductCacheService.java
-
43xm-core/src/main/java/com/xm/core/service/cache/XmProjectCacheService.java
-
70xm-core/src/main/java/com/xm/core/service/cache/sub/CacheMessageListener.java
-
65xm-core/src/main/java/com/xm/core/service/cache/sub/CahceChannelConfig.java
@ -0,0 +1,70 @@ |
|||||
|
package com.xm.core.service.cache.sub; |
||||
|
|
||||
|
import com.xm.core.service.cache.XmProductCacheService; |
||||
|
import com.xm.core.service.cache.XmProjectCacheService; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.data.redis.connection.Message; |
||||
|
import org.springframework.data.redis.connection.MessageListener; |
||||
|
import org.springframework.data.redis.core.StringRedisTemplate; |
||||
|
import org.springframework.data.redis.serializer.RedisSerializer; |
||||
|
import org.springframework.scheduling.annotation.Scheduled; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
|
||||
|
@Service |
||||
|
public class CacheMessageListener implements MessageListener { |
||||
|
|
||||
|
|
||||
|
RedisSerializer<String> stringSerializer=RedisSerializer.string(); |
||||
|
|
||||
|
@Autowired |
||||
|
StringRedisTemplate redisTemplate; |
||||
|
|
||||
|
@Autowired |
||||
|
XmProductCacheService xmProductCacheService; |
||||
|
|
||||
|
|
||||
|
@Autowired |
||||
|
XmProjectCacheService xmProjectCacheService; |
||||
|
|
||||
|
|
||||
|
private static final Logger logger = LoggerFactory.getLogger(CacheMessageListener.class); |
||||
|
|
||||
|
/*定时心跳*/ |
||||
|
@Scheduled(cron = "0/10 * * * * *") |
||||
|
public void timer() { |
||||
|
redisTemplate.convertAndSend("XM_PRODUCT_CACHE", ""); |
||||
|
redisTemplate.opsForValue().set("headbea", "1"); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public void onMessage(Message message, byte[] pattern) { |
||||
|
try { |
||||
|
// TODO Auto-generated method stub |
||||
|
String msg=message.toString(); |
||||
|
logger.debug("消息下行开始----》"+msg); |
||||
|
//logger.debug(msg); |
||||
|
//心跳包 |
||||
|
if("".equals(msg)||"\"\"".equals(msg)) { |
||||
|
return; |
||||
|
} |
||||
|
String channelName=stringSerializer.deserialize(pattern); |
||||
|
if(channelName.startsWith("XM_PRODUCT")) { |
||||
|
xmProductCacheService.clearLocalCache(msg); |
||||
|
}else if(channelName.startsWith("XM_PROJECT")) { |
||||
|
xmProjectCacheService.clearLocalCache(msg); |
||||
|
}else if(channelName.startsWith("XM_GROUP")) { |
||||
|
|
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
logger.error("",e); |
||||
|
}finally { |
||||
|
logger.debug("消息下行结束!!!!!!!!"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,65 @@ |
|||||
|
package com.xm.core.service.cache.sub; |
||||
|
|
||||
|
import com.mdp.mq.sp.ChannelConfig; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.context.annotation.Configuration; |
||||
|
import org.springframework.data.redis.connection.MessageListener; |
||||
|
import org.springframework.data.redis.listener.ChannelTopic; |
||||
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer; |
||||
|
import org.springframework.data.redis.listener.Topic; |
||||
|
|
||||
|
@Configuration |
||||
|
public class CahceChannelConfig implements ChannelConfig { |
||||
|
|
||||
|
RedisMessageListenerContainer container; |
||||
|
|
||||
|
@Autowired |
||||
|
CacheMessageListener messageListener; |
||||
|
|
||||
|
@Override |
||||
|
public RedisMessageListenerContainer container(RedisMessageListenerContainer container) { |
||||
|
// TODO Auto-generated method stub |
||||
|
this.container=container; |
||||
|
|
||||
|
container.addMessageListener(messageListener, topic("XM_PRODUCT_CACHE")); |
||||
|
container.addMessageListener(messageListener, topic( "XM_PROJECT_CACHE")); |
||||
|
container.addMessageListener(messageListener, topic( "XM_GROUP_CACHE")); |
||||
|
return container; |
||||
|
} |
||||
|
|
||||
|
public void setMessageListener(MessageListener messageListener,Topic topic){ |
||||
|
container.addMessageListener(messageListener, topic); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
Topic topic(String channelName){ |
||||
|
ChannelTopic topic=new ChannelTopic(channelName); |
||||
|
return topic; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void removeMessageListener(MessageListener messageListener, Topic topic) { |
||||
|
container.removeMessageListener(messageListener,topic); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void removeMessageListener(MessageListener messageListener) { |
||||
|
container.removeMessageListener(messageListener); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void removeMessageListener(String listenerName,Topic topic) { |
||||
|
|
||||
|
container.removeMessageListener(messageListener,topic); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void addMessageListener(String listenerName, Topic topic) { |
||||
|
container.addMessageListener(messageListener,topic); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue