//package com.eactive.eai.rms.onl.common.service;
//
//import java.io.BufferedReader;
//import java.io.BufferedWriter;
//import java.io.File;
//import java.io.FileReader;
//import java.io.FileWriter;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.net.InetSocketAddress;
//import java.net.Socket;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.log4j.Logger;
//import org.quartz.Job;
//import org.quartz.JobExecutionContext;
//import org.quartz.JobExecutionException;
//import org.quartz.SchedulerException;
//import org.springframework.context.ApplicationContext;
//
//import com.eactive.eai.rms.common.util.ItsmSmsSender;
//import com.eactive.eai.rms.common.context.MonitoringContext;
//import com.eactive.eai.rms.common.context.MonitoringContextImpl;
//import com.eactive.eai.rms.common.datasource.DataSourceContextHolder;
//import com.eactive.eai.rms.common.datasource.DataSourceType;
//import com.eactive.eai.rms.common.datasource.DataSourceTypeManager;
//import com.eactive.eai.rms.common.util.CommonUtil;
//import com.eactive.eai.rms.onl.common.dao.TSEAIS001DAO;
//import com.eactive.eai.rms.onl.manage.serviceinfo.jmsqueuemonitor.JmsQueueMonitorManService;
//
//public class AsyncQueueMonitoringJob implements Job {
//	private static final Logger logger = Logger.getLogger(AsyncQueueMonitoringJob.class);
//	
//	private final String SMS_PATH = "/fslog/eai/eaiQueueMsg/flag_sms.txt";
//	private final String PUSH_PATH = "/fslog/eai/eaiQueueMsg/flag_push.txt";
//	private final String DATE_FORMAT = "yyyy년MM월dd일 HH시mm분ss초";
//	private final String SAFETY = "SAFETY";
//	private final String WARNING = "WARNING";
//	
//	JmsQueueMonitorService jmsQueueMonitorService;
//	TSEAIS001DAO tseais001DAO;
//
//	private transient MonitoringContext monitoringContext;
//    private JmsQueueMonitorManService  jmsQueueMonitorManService;
//	
//	
//	@Override
//	public void execute(JobExecutionContext context) throws JobExecutionException {
//		ApplicationContext appContext = null;
//		try {
//			appContext = (ApplicationContext)context.getScheduler().getContext().get("applicationContext");
//		} catch (SchedulerException e) {
//			logger.error("applicationContext get module error",e);
//			return;
//		} catch (Exception e2){
//			logger.error("DAO error",e2);
//			return;
//		}
//		logger.info("** ASYNCQUEUEMONITORING START !!");
//
//		monitoringContext    = (MonitoringContext)appContext.getBean("monitoringContext");
//   		jmsQueueMonitorManService = (JmsQueueMonitorManService) appContext.getBean("jmsQueueMonitorManService");
//		this.jmsQueueMonitorService = (JmsQueueMonitorService) appContext.getBean("jmsQueueMonitorService");
//		this.tseais001DAO = (TSEAIS001DAO) appContext.getBean("tseais001DAO");
//		run();
//	}
//	
//	private void run() {
//		// RMS 대외서버에 Queue 프로퍼티에서 임계치(maxCount,smsCount)를 불러온다.
//		int maxCount = 0;
//		int smsCount = 0;
//		try {
//			for (DataSourceType dataSourceType : DataSourceTypeManager.getOnlineDataSourceTypes()) {
//				DataSourceContextHolder.setDataSourceType(dataSourceType);
//				
//				
// 				maxCount = monitoringContext.getIntProperty(MonitoringContext.QUEUEHOSTCOUNT,0);
//				smsCount = monitoringContext.getIntProperty(MonitoringContext.QUEUESMSCOUNT,0);
//				
//				String schema = dataSourceType.getSchema();
//				String jndi = dataSourceType.getJndiName();
//				logger.info("** ASYNCQUEUEMONITORING JNDI >> "+jndi);
//				int maxErrCntSMS = 0;
//				int maxErrCntPUSH = 0;
//				int maxErrCntETC = 0;
//				HashMap paramMap = new HashMap();
////				List<JmsQueueMonitorVo> queMonitorList = selectQueueMonitoringList(schema, jndi);
//				List<HashMap<String,Object>> queMonitorList = (List<HashMap<String, Object>>) jmsQueueMonitorManService.selectQueueMonitoringList(paramMap);
//				for (HashMap m : queMonitorList) {
//					String eaiBzwkDstcd = (String)m.get("EAIBZWKDSTCD");
//					String queUsageDstcd = (String)m.get("QUEUSAGDSTCD");
//					String nonSynczTranQueName = (String)m.get("NONSYNCZTRANQUENAME");
//					String eaiSevrInstName = (String)m.get("EAISEVRINSTNCNAME");
//					
//					int count = 0;
//					if ("1".equals(queUsageDstcd)) {
//						count = getMessageCurrent(getArrayByQueueNameWithSchema(nonSynczTranQueName, schema, eaiSevrInstName));
//					}
//					if ("2".equals(queUsageDstcd)) {
//						count = getMessageCurrent(getArrayByQueueNameWithSchema(nonSynczTranQueName, schema, eaiSevrInstName));
//					}
//					if ("3".equals(queUsageDstcd)) {
//						count = getMessageCurrent(getArrayByQueueNameWithSchema(nonSynczTranQueName, schema, eaiSevrInstName));
//					}
//					if ("4".equals(queUsageDstcd)) {
//						count = getMessageCurrent(getArrayByQueueNameWithSchema(nonSynczTranQueName, schema, eaiSevrInstName));
//					}
//					switch (eaiBzwkDstcd.toUpperCase().trim()) {
//						case "CBZ":
//							if (count > maxErrCntSMS)
//								maxErrCntSMS = count;
//							break;
//						case "EIR":
//							if (count > maxErrCntPUSH)
//								maxErrCntPUSH = count;
//							break;
//						default:
//							if (count > maxErrCntETC)
//								maxErrCntETC = count;
//					}
//				}
//				
//				logger.info("System = "+ dataSourceType.getName() +" || Queue List Count = "+ queMonitorList.size());
//				logger.info("maxErrCntSMS = "+ maxErrCntSMS + " || maxErrCntPUSH = "+ maxErrCntPUSH +" || maxErrCntETC = "+ maxErrCntETC);
//				
//				// SMS
//				sendMessage("SMS", maxErrCntSMS, dataSourceType.getName(), maxCount, smsCount);
//				// PUSH
//				sendMessage("PUSH", maxErrCntPUSH, dataSourceType.getName(), maxCount, smsCount);
//				// ETC
//				if (maxErrCntETC > smsCount) {
//					//target > default : push 
//					itsmSendMessage("PUSH",dataSourceType.getName() +" 시스템 기타(SMS,PUSH제외) Queue 누적 MAX:"+ maxErrCntETC +" | "+ CommonUtil.getToday("HH시mm분"), false);
//					logger.warn("Queue:"+ dataSourceType.getName() +" 시스템 기타(SMS,PUSH제외) Queue 누적 "+ maxErrCntETC +" | "+ CommonUtil.getToday(DATE_FORMAT));
//				}
//			}
//			
//		} catch (Exception e) {
//			logger.error(e.toString());
//		}
//	}
//	
//	/**
//	 * 메시지 전송 (TODO: 오픈뱅킹용만 활성화, 나머진 주석 처리)
//	 * @param target
//	 * @param targetCount
//	 * @param serverName
//	 * @param maxCount
//	 * @param smsCount
//	 */
//	private void sendMessage(String target, int targetCount, String serverName, int maxCount, int smsCount) {
//		if (targetCount > maxCount) {
//			// 하나의 인스턴스에 maxCount 초과시 호스트로 통제거래를 날린다
//			if (StringUtils.equals(serverName, DataSourceTypeManager.NSG)) {
//				// 큐 지연현상 발생시, 지연한 시스템을 구분하여 [내부]일 경우에만 고객통지로  KAD0699961EAIS01 서비스를 호출한다.
//				// 거래가 전송안될(100번 큐에 쌓일) 가능성을 고려하여 여러노드에 같이 전송한다.(내부 오류는 대외서버로 던진다)
//				if (StringUtils.equals(readFlagFile(target), SAFETY)) {
//					if (sendHostDSG(target, WARNING) == 1) {
//						// 오류발생 전문을 발송하고, 발송했다는 flag를 파일에 저장한다. 메모리에 저장할 경우,  WAS 재기동시, 정보가 사라지게 되므로 파일로 저장한다.
//						writeFlagFile(target, "W");
//						// EAI담당자들에게 SMS발송(HOST전송했음을 같이 전달)
//						itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 누적(HOST통제) MAX:"+ targetCount +" | "+ CommonUtil.getToday(DATE_FORMAT), true);
//					} else {
//						// 비정상일때 파일의 상태는 변경하지 않고 SMS만 보낸다.
//						itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 임계치가 넘었으나 HOST 통제 못함 MAX:"+ targetCount +" | "+ CommonUtil.getToday(DATE_FORMAT), false);
//					}
//				} else {
//					// SAFETY가 아니더라도 EAI담당자에게 SMS 발송
//					itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 누적 MAX:"+ targetCount +" | "+ CommonUtil.getToday(DATE_FORMAT), false);
//				}
//			} else {
//				// 내부아닌 다른 시스템은 EAI담당자에게 SMS만 날린다
//				itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 누적 MAX:"+ targetCount +" | "+ CommonUtil.getToday(DATE_FORMAT), false);
//			}
//			logger.warn(target +" Queue:"+ serverName +" 시스템 QueueMax :"+ targetCount +" | "+ CommonUtil.getToday(DATE_FORMAT));
//		} else if (targetCount > smsCount) {
//			// 하나의 인스턴스에 smsCount 초과시 EAI담당자에게 SMS를 전송
//			itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 누적 MAX:"+ targetCount +" | "+ CommonUtil.getToday(DATE_FORMAT), false);
//			logger.warn(target +" Queue:"+ serverName +" 시스템 QueueMax :"+ targetCount +" | "+ CommonUtil.getToday(DATE_FORMAT));
//		} else if (targetCount == 0) {
////			// 만약 기존에 통제를 걸어놨으면, 큐가 0일때 해제 메세지를 보낸다.
//			if (StringUtils.equals(serverName, DataSourceTypeManager.NSG) && StringUtils.equals(readFlagFile(target), WARNING)) {
//				// EAI시스템이 정상인지 체크하고 정상이면 해제 메세지를 보낸다.
//				if (checkConnectNSG() == 1) {
//					if (sendHostDSG(target, "SAFETY ") == 1) {
//						writeFlagFile(target, "S");
//						// EAI담당자들에게 SMS발송
//						itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 정상화 (HOST "+ target +" 통제 해제) "+CommonUtil.getToday("HH시mm분"), true);
//						logger.info("Queue:"+ serverName +" 시스템 Queue 정상화 (HOST "+ target +" 통제 해제) | "+ CommonUtil.getToday(DATE_FORMAT));
//					} else {
//						itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 정상화 되었으나 HOST "+ target +" 해제 못함  "+ CommonUtil.getToday("HH시mm분"), false);
//						logger.info("Queue:"+ serverName +" 시스템 Queue 정상화 되었으나 HOST "+ target +" 해제 못함 | "+ CommonUtil.getToday(DATE_FORMAT));
//					}
//				} else {
//					// Queue는 빠졌으나 EAI시스템 비정상 일때
//					itsmSendMessage(target,serverName +" 시스템 "+ target +" Queue 정상화 되었으나 WAS가 비정상  "+ CommonUtil.getToday("HH시mm분"), false);
//					logger.info(target +" Queue:"+ serverName +" 시스템 "+ target +" Queue 정상화 되었으나 WAS 비정상 | "+ CommonUtil.getToday(DATE_FORMAT));
//				}
//			}
//		} else {}
//	}
//	
//	/**
//	 * Queue 목록 조회
//	 * @param schema
//	 * @param jndi
//	 * @return
//	 * @throws Exception 
//	 */
////	private List<JmsQueueMonitorVo> selectQueueMonitoringList(String schema, String jndi) throws Exception {
////		List<JmsQueueMonitorVo> ret = new ArrayList<JmsQueueMonitorVo>();
////		StringBuffer sbuffer = new StringBuffer();
////		sbuffer.append("SELECT Q1.EAIBZWKDSTCD, C1.BZWKDSTICNAME, Q1.EAIQUEBZWKCTNT, Q1.EAISEVRINSTNCNAME, Q1.QUEUSAGDSTCD, Q1.NONSYNCZTRANQUENAME ");
////		sbuffer.append("  FROM ").append(schema).append(".TSEAIQM01 Q1 ");
////		sbuffer.append("  	INNER JOIN ").append(schema).append(".TSEAICM01 C1 ON Q1.EAIBZWKDSTCD = C1.EAIBZWKDSTCD ");
////		sbuffer.append("WHERE Q1.QUEUSEYN = '1' ");
////		sbuffer.append("ORDER BY Q1.EAIBZWKDSTCD, Q1.EAIQUEBZWKCTNT, Q1.EAISEVRINSTNCNAME");
////		Connection conn = null;
////		Statement stmt = null;
////		ResultSet rset = null;
////		try {
////			conn = getConnection(jndi);
////			stmt = conn.createStatement();
////			rset = stmt.executeQuery(sbuffer.toString());
////			
////			while (rset.next()) {
////				JmsQueueMonitorVo jmsQueVo = new JmsQueueMonitorVo();
////				
////				String eaiBzwkDstcd = rset.getString(1);
////				String queUsageDstcd = rset.getString(5);
////				String nonSynczTranQueName = rset.getString(6);
////				
////				jmsQueVo.setBzwkDstcd(eaiBzwkDstcd);
////				switch (queUsageDstcd) {
////					case "1":
////						jmsQueVo.setSendQueueName(nonSynczTranQueName);
////						jmsQueVo.setSendCount(0);
////						break;
////					case "2":
////						jmsQueVo.setReceiveQueueName(nonSynczTranQueName);
////						jmsQueVo.setReceiveCount(0);
////						break;
////					case "3":
////						jmsQueVo.setSendErrorQueueName(nonSynczTranQueName);
////						jmsQueVo.setSendErrorCount(0);
////						break;
////					case "4":
////						jmsQueVo.setReceiveErrorQueueName(nonSynczTranQueName);
////						jmsQueVo.setReceiveErrorCount(0);
////						break;
////					default:
////				}
////				ret.add(jmsQueVo);
////			}
////			
////		} catch (SQLException e) {
////			logger.error("SQL error", e);
////		} catch (Exception e) {
////			logger.error(e.toString());
////		} finally {
////			try {
////				if (rset != null)
////					rset.close();
////			} catch (SQLException e) {}
////			try {
////				if (stmt != null)
////					stmt.close();
////			} catch (SQLException e) {}
////			try {
////				if (conn != null)
////					conn.close();
////			} catch (SQLException e) {}
////		}
////		return ret;
////	}
////	
////	/**
////	 * 
////	 * @param jndi
////	 * @return
////	 */
////	private Connection getConnection(String jndi) {
////		Connection conn = null;
////		try {
////			InitialContext ic = new InitialContext();
//////			DataSource dataSource = (DataSource) ic.lookup(jndi);
//////			conn = dataSource.getConnection();
////			// TEST
////			Class.forName("com.ibm.db2.jcc.DB2Driver");
////			conn = DriverManager.getConnection("jdbc:db2://10.2.25.20:50000/DEVTEST", "S010794", "3rodnjf!!");
////		} catch (NamingException e) {
////			logger.error("JNDI Naming error", e);
////		} catch (SQLException e) {
////			logger.error("Datasouce Connection error ("+ jndi +")", e);
////		} catch (Exception e) {
////			logger.error(e.toString());
////		}
////		return conn;
////	}
//	
//	/**
//	 * 프로퍼티에 대한 시스템 스키마 별 조회가 없어 그냥 프라퍼티 조회 사용함
//	 * @param message
//	 * @param isManageSend
//	 */
//	private void itsmSendMessage(String target,String message, boolean isManageSend) {
//
//		String sms_ip = monitoringContext.getStringProperty(MonitoringContext.ITSMPERM_IP,"");
//		String sms_port = monitoringContext.getStringProperty(MonitoringContext.ITSMPERM_PORT,"");
//		HashMap<String,String> info = new HashMap<>();
//		info.put("ItsmPermIP", sms_ip);
//		info.put("ItsmPermPORT", sms_port);
//		if("SMS".equals(target)){
//			ItsmSmsSender.sendGroupSMS(info,ItsmSmsSender.EAI_GRP_MODE, ItsmSmsSender.EAI_GRP_MODE, message);
//			if (isManageSend) {
//				ItsmSmsSender.sendGroupSMS(info,ItsmSmsSender.EAI_GRP_MODE, "JDM", message);
//			}
//		}else if("PUSH".equals(target)){
//			ItsmSmsSender.sendGroupPUSH(info,ItsmSmsSender.EAI_GRP_MODE, ItsmSmsSender.EAI_GRP_MODE, message);
//			if (isManageSend) {
//				ItsmSmsSender.sendGroupPUSH(info,ItsmSmsSender.EAI_GRP_MODE, "JDM", message);
//			}
//		}
//	}
//	
//	/**
//	 * Sync Client 소켓
//	 * LL 4자리 읽어서 길이 체크 (송신시에도 LL 4자리 붙여서 전송)
//	 * 리턴값0:비정상, 1:정상
//	 * @param ip
//	 * @param port
//	 * @param message
//	 * @return
//	 */
//	private int socketSendMessageSync(String ip, int port, String message) {
//		int ret = 0;
//		Socket socket = null;
//		InputStream in = null;
//		OutputStream out = null;
//		try {
//			socket = new Socket(ip, port);
//			in = socket.getInputStream();
//			out = socket.getOutputStream();
//			out.write(String.format("%04d", message.getBytes().length).getBytes());
//			out.write(message.getBytes());
//			out.flush();
//			
//			byte[] lenByte = new byte[4];
//			int read = in.read(lenByte);
//			if (read == 4) {
//				int resSize = Integer.parseInt(new String(lenByte).trim());
//				//byte [] recv = new byte[resSize];
//
//				byte [] recv = null;
//				if (0 <= resSize && resSize <= 4096) {
//					recv = new byte[resSize];
//				}
//				int read2 = in.read(recv);
//				if (read2 == resSize ){
//					String result = new String(recv);
//					if (StringUtils.equals(result, "1")) {
//						ret = 1;
//					} else {
//						ret = 0;
//					}
//				}
//			} else {
//				ret = 0;
//			}
//			
//		} catch (Exception e) {
//			logger.error(e.toString(), e);
//			ret = 0;
//		} finally {
//			try {
//				if (in != null) in.close();
//			} catch (IOException e) {}
//			try {
//				if (out != null) out.close();
//			} catch (IOException e) {}
//			try {
//				if (socket != null) socket.close();
//			} catch (IOException e) {}
//		}
//		return ret;
//	}
//	
//	private String[] getArrayByQueueNameWithSchema(String queueName, String schema, String eaiSevrInstName) {
//		String[] ret = null;
//		try {
//			List<Map<String, String>> serverList = getEaiServerIpList(schema);
//			for (Map<String, String> server : serverList) {
//				String inst = server.get("EAISVRINSTNM");
//				if(inst != null && (inst.equals(eaiSevrInstName))){
//					String host = server.get("HOSTNAME");
//					HashMap map = jmsQueueMonitorService.getDataByHost(host, inst);
//					if (map != null && map.get(queueName) != null) {
//						ret = (String[]) map.get(queueName);
//						break;
//					}
//				}
//			}
//		} catch (Exception e) {
//			logger.error(e.toString());
//		}
//		return ret;
//	}
//	
//	@SuppressWarnings({ "rawtypes", "unchecked" })
//	private List<Map<String, String>> getEaiServerIpList(String schema) {
//		List<Map<String, String>> ret = new ArrayList<Map<String, String>>();
//		HashMap params = new HashMap();
//		params.put("schemaId", schema);
//		try {
//			ret = tseais001DAO.getEaiServerIpList(params);
//			for (Map<String, String> map : ret) {
//				String port = (String) MonitoringContextImpl.getPortMapper().get(map.get("EAISVRIP"));
//				map.put("WEBSERVERPORT", port);
//			}
//		} catch (Exception e) {
//			logger.error(e.toString());
//		}
//		return ret;
//	}
//	
//	/**
//	 * 상태 체크 파일 확인
//	 * @param target
//	 * @return
//	 */
//	private String readFlagFile(String target) {
//		StringBuffer ret = new StringBuffer();
//		BufferedReader br = null;
//		try {
//			String path = "";
//			switch (target) {
//				case "SMS":
//					path = SMS_PATH;
//					break;
//				case "PUSH":
//					path = PUSH_PATH;
//					break;
//				default:
//			}
//			br = new BufferedReader(new FileReader(new File(path)));
//			String s = "";
//			while ((s = br.readLine())!= null) {
//				ret.append(s);
//			}
//			logger.info(target +" 상태: "+ ret.toString());
//		} catch (Exception e) {
//			logger.error(e.toString());
//		} finally {
//			try {
//				if (br != null) {
//					br.close();
//				}
//			} catch (IOException e) {}
//		}
//		return ret.toString();
//	}
//	
//	/**
//	 * 오류발생 전문을 발송하고, 발송했다는 flag를 파일에 저장한다. 
//	 * 메모리에 저장할 경우,  WAS 재기동시, 정보가 사라지게 되므로 파일로 저장한다.
//	 * @param target
//	 * @param flag
//	 */
//	private void writeFlagFile(String target, String flag) {
//		BufferedWriter bw = null;
//		try {
//			String path = "";
//			switch (target) {
//				case "SMS":
//					path = SMS_PATH;
//					break;
//				case "PUSH":
//					path = PUSH_PATH;
//					break;
//				default:
//			}
//			bw = new BufferedWriter(new FileWriter(new File(path), false));
//			switch (flag) {
//				case "W":
//					bw.write(WARNING);
//					break;
//				case "S":
//					bw.write(SAFETY);
//					break;
//				default:
//			}
//			bw.flush();
//		} catch (Exception e) {
//			logger.error(e.toString());
//		} finally {
//			try {
//				if (bw != null) bw.close();
//			} catch (IOException e) {}
//		}
//	}
//	
//	private int checkConnectNSG() {
//		int ret = 0;
//		boolean checkErr = false;
//		try {
//			DataSourceType datasource = DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.NSG);
//			DataSourceContextHolder.setDataSourceType(datasource);
//
//			//List<Map<String, String>> list = getEaiServerIpList(datasource.getSchema());
//
//			List<Map<String, String>> list = new ArrayList<>();
//            if(datasource != null) {
//            	list = getEaiServerIpList(datasource.getSchema());
//            }
//			for (Map<String, String> map : list) {
//				String nsgIp = map.get("EAISVRIP");
//				int nsgPort  = Integer.parseInt(map.get("EAISVRLSNPORT"));
//				Socket socket = null;
//				try {
//					socket = new Socket();
//					socket.setSoTimeout(1000);
//					socket.connect(new InetSocketAddress(nsgIp, nsgPort), 1000);
//				} catch (IOException e) {
//					logger.error(e.toString(),e);
//					checkErr = true;
//					break;
//				} finally {
//					if (socket != null) socket.close();
//				}
//			}
//		} catch (Exception e) {
//			logger.error(e.toString(),e);
//			checkErr = true;
//		}
//		if (checkErr) {
//			logger.info("EAI 내부 시스템이 아직 비정상입니다.");
//			ret = 0;
//		} else {
//			logger.info("EAI 내부 시스템이 정상입니다.");
//			ret = 1;
//		}
//		return ret;
//	}
//	
//	/**
//	 * 대외 서버로 메시지 전송
//	 * @param target
//	 * @param message
//	 * @return
//	 */
//	private int sendHostDSG(String target, String message) {
//		int ret = 0;
//		try {
//			String str = "";
//			switch (target) {
//				case "SMS":
//					str = "1S"+ message;
//					break;
//				case "PUSH":
//					str = "1P"+ message;
//					break;
//				default:
//			}
//			
//			boolean sendOK = false;
//			DataSourceType datasource = DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.DSG);
//			
//			if(datasource != null){
//				DataSourceContextHolder.setDataSourceType(datasource);
//				List<Map<String, String>> list1 = getEaiServerIpList(datasource.getSchema());
//				// 중복행 제거
//				List<Map<String, String>> list2 = list1.parallelStream().distinct().collect(Collectors.toList());
//				for (Map<String, String> map : list2) {
//					String dsgIp = map.get("EAISVRIP");
//					int port = monitoringContext.getIntProperty(MonitoringContext.QUEUEHOSTPORT,0);
//					// 정상 전송(응답값 1) 이면 종료하고, 비정상 전송이면 다음 노드로 보낸다
//					if (socketSendMessageSync(dsgIp, port, str) == 1) {
//						sendOK = true;
//						break;
//					}
//				}
//			}
//			if (sendOK) {
//				ret = 1;
//			}
//		} catch (Exception e) {
//			logger.error(e.toString(), e);
//		}
//		return ret;
//	}
//	
//	/**
//	 * Message Current(배열의 6번째)값 을 정수로 변환해서 리턴한다.
//	 * @param infos
//	 * @return
//	 */
//	private int getMessageCurrent(String [] infos) {
//		int ret = 0 ;
//		if (infos != null && infos.length > 5) {
//			ret = CommonUtil.getInt(infos[5]);
//		}
//		return ret ;
//	}
//}