init
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
package com.eactive.eai.flowcontrol.jeus;
|
||||
|
||||
import com.eactive.eai.common.message.EAIMessage;
|
||||
import com.eactive.eai.common.routing.ElinkESBProcessProxy;
|
||||
import com.eactive.eai.common.routing.RoutingManager;
|
||||
import com.eactive.eai.common.routing.RoutingVO;
|
||||
import com.eactive.eai.common.util.Logger;
|
||||
|
||||
import javax.jms.*;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Properties;
|
||||
import java.lang.IllegalStateException;
|
||||
|
||||
public class DefaultQueueConsumer implements Runnable, ExceptionListener {
|
||||
|
||||
private static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
|
||||
|
||||
Connection connection = null;
|
||||
Session session = null;
|
||||
MessageConsumer consumer = null;
|
||||
String name = null;
|
||||
String queue = null;
|
||||
boolean run = true;
|
||||
|
||||
public DefaultQueueConsumer(String name, Connection con, String queue) {
|
||||
this.connection = con;
|
||||
try {
|
||||
this.name = name;
|
||||
this.queue = queue;
|
||||
connection.start();
|
||||
connection.setExceptionListener(this);
|
||||
|
||||
// Create a Session
|
||||
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||
|
||||
// Create the destination (Topic or Queue)
|
||||
Destination destination = session.createQueue(queue);
|
||||
consumer = session.createConsumer(destination);
|
||||
} catch (JMSException e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
EAIMessage eaiMessage = null;
|
||||
while(run) {
|
||||
try {
|
||||
Message message = consumer.receive(2000);
|
||||
|
||||
ObjectMessage omsg = null;
|
||||
|
||||
if(message == null) {
|
||||
// logger.warn(name + " -> EMPTY MESSAGE...");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(message instanceof ObjectMessage) {
|
||||
omsg = (ObjectMessage)message;
|
||||
} else {
|
||||
throw new RuntimeException(name+" Invlid JMS Message Type. - "+message);
|
||||
}
|
||||
|
||||
try {
|
||||
eaiMessage = (EAIMessage)omsg.getObject();
|
||||
} catch(Exception e) {
|
||||
throw new RuntimeException(name+" Invlid value object in ObjectMessage. - "+e.getMessage() );
|
||||
}
|
||||
|
||||
RoutingVO routingVO = RoutingManager.getInstance().getRoutingVO(eaiMessage.getFlwCntlRtnNm());
|
||||
String serviceURI = routingVO.getSyncRoutingPath();
|
||||
boolean isLocal = true;
|
||||
|
||||
Properties prop = new Properties();
|
||||
try {
|
||||
Enumeration en = omsg.getPropertyNames();
|
||||
for (; en.hasMoreElements(); ) {
|
||||
String propName = (String)en.nextElement();
|
||||
String propValue = omsg.getStringProperty(propName);
|
||||
prop.setProperty(propName, propValue);
|
||||
}
|
||||
} catch(JMSException e) {
|
||||
throw new RuntimeException(name+" onMessage Error. - "+e.getMessage());
|
||||
}
|
||||
|
||||
try {
|
||||
logger.debug("JEUS JMS Receiver : " + eaiMessage);
|
||||
eaiMessage = ElinkESBProcessProxy.callElinkESBProcess(serviceURI, eaiMessage, isLocal, prop);
|
||||
} catch(Exception e) {
|
||||
throw new RuntimeException(name+" onMessage Error. - "+e.getMessage());
|
||||
}
|
||||
}
|
||||
catch(IllegalStateException ise) {
|
||||
logger.error(name+" IllegalStateException = " + ise.getMessage(), ise);
|
||||
|
||||
}
|
||||
catch(JMSException e) {
|
||||
logger.error(name+" JMSException = " + e.getMessage(), e);
|
||||
run = false;
|
||||
}
|
||||
catch(RuntimeException e) {
|
||||
logger.error(name+" RuntimeException = " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
run = false;
|
||||
if(consumer != null)
|
||||
try {
|
||||
consumer.close();
|
||||
} catch (JMSException e) { }
|
||||
if(session != null)
|
||||
try {
|
||||
session.close();
|
||||
} catch (JMSException e) { }
|
||||
if(connection != null)
|
||||
try {
|
||||
connection.close();
|
||||
} catch (JMSException e) { }
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onException(JMSException arg0) {
|
||||
logger.error("JMS Exception occured. Shutting down client.");
|
||||
stop();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user