package org.infosec.ismp.manager.servicecheck; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.MessageListener; import org.infosec.ismp.manager.agent.servicecheck.ServiceCheckLocator; import org.infosec.ismp.manager.model.ServiceCheckResultEntity; import org.infosec.ismp.util.ThreadCategory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class ServiceCheckMessageListener implements MessageListener { private ServiceCheckLocator locator; private ServiceCheckResultService service; @Autowired(required=true) public void setLocator(ServiceCheckLocator locator) { this.locator = locator; } @Autowired(required=true) public void setService(ServiceCheckResultService service) { this.service = service; } @Override public void onMessage(Message message) { MapMessage map = (MapMessage)message; try { String nodeid = map.getString("nodeid"); String ipAddr = map.getString("ipAddr"); String serviceCheckStatus = map.getString("pingStatus");//检测结果状态 double responseTime = map.getDouble("responseTime");//检测响应时间 String serviceType = map.getString("serviceType"); String serviceCheckTime = map.getString("pingTime");//检测记录时间 String domain = locator.getDomainByNodeid(nodeid); if(null!=domain){ ServiceCheckResultEntity entity = new ServiceCheckResultEntity(); entity.setDomain(domain); entity.setNodeid(nodeid); entity.setIpAddr(ipAddr); entity.setServiceCheckStatus(serviceCheckStatus); entity.setServiceType(serviceType); entity.setResponseTime(responseTime); entity.setServiceCheckTime(serviceCheckTime); service.save(entity); locator.setServiceCheckResult(nodeid,entity); }else { log().warn("该serviceCheck结果没有找到对应的域,抛弃,该nodeid:"+nodeid); } // System.out.println("ServiceCheckMessageListener==================="); // System.out.println(nodeid); // System.out.println(ipAddr); // System.out.println(pingStatus); // System.out.println(responseTime); // System.out.println(serviceType); // System.out.println(pingTime); } catch (JMSException e) { e.printStackTrace(); } } ThreadCategory log() { return ThreadCategory.getInstance(getClass()); } }