package org.infosec.ismp.manager.direct; import java.io.IOException; import java.net.InetAddress; import java.util.List; import javax.jms.Message; import org.infosec.ismp.eventd.sender.EventSender; import org.infosec.ismp.eventd.sender.UdpEventSocket; import org.infosec.ismp.model.event.Event; import org.infosec.ismp.util.ThreadCategory; import org.springframework.jms.core.JmsTemplate; public abstract class JMSSocket { private JmsTemplate jmsTemplate; public JmsTemplate getJmsTemplate() { return jmsTemplate; } public String getDestination() { return destination; } private String destination; public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } public void setDestination(String destination) { this.destination = destination; } /** * 将事件发送到指定的目的地址 * * @param event * @param addr * @param port * @return */ public void sendEvent(Event event, InetAddress addr, int port) throws Exception { EventSender.sendEventNoReply(addr, port, event); } /** * 接受jms事件 * @return * @throws IOException */ public List<DirectReply> receive()throws IOException{ Message message = jmsTemplate.receive(destination); return processMessage(message); } private ThreadCategory log() { return ThreadCategory.getInstance(UdpEventSocket.class); } protected abstract List<DirectReply> processMessage(Message message); }