package com.zdcf.jms;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import com.zdcf.base.InfoChangeEvent;
import com.zdcf.model.Cacheable;
import com.zdcf.search.IIndexService;
import com.zdcf.service.ICacheService;
public class InfoChangeListener implements MessageListener {
private static final Logger logger = Logger.getLogger(InfoChangeListener.class);
@Autowired
private ICacheService cacheService;
@Autowired
private IIndexService indexService;
//在基础信息变动时得到通知,更新Redis缓存和ES index
public void onMessage(Message message) {
ObjectMessage objMessage = (ObjectMessage) message;
try {
// logger.info("接受到信息,开始存储cache");
InfoChangeEvent msg = (InfoChangeEvent)objMessage.getObject();
Cacheable obj = (Cacheable)msg.getObject();
cacheService.process(obj, msg.getType());
indexService.process(obj, msg.getType());
} catch (JMSException e) {
e.printStackTrace();
logger.error("failed to process cache/ES for object", e);
}
}
}