📄 jmsservice.java
字号:
package cn.madhouse.jms;
import java.util.Hashtable;
import javax.jms.ConnectionFactory;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.madhouse.wireless.sms.MOSMS;
import com.madhouse.wireless.sms.MTReportStatus;
import com.madhouse.wireless.sms.MTSMS;
import com.madhouse.wireless.sms.WireMessage;
public class JmsService implements ExceptionListener {
private Context context;
private Hashtable props = new Hashtable();
private QueueConnection queueConnection;
private QueueSession moSession;
private QueueSession mtSession;
private QueueSession statusSession;
private QueueReceiver mtReceiver;
private QueueSender mtSender;
private QueueSender moSender;
private QueueSender statusSender;
private Queue moQueue;
private Queue mtQueue;
private Queue statusQueue;
private String url = "192.168.3.27:1099";
private String factoryJNDI = "ConnectionFactory";
private String moQueueJNDI = "queue/smsMoQueue";
private String mtQueueJNDI = "queue/smsMtQueue";
private String statusQueueJNDI = "queue/smsStatusQueue";
private String gateWay = "empp";
private JmsMtReceiver mtListener;
public void setUrl(String url) {
this.url = url;
}
public void setFactoryJNDI(String factoryJNDI) {
this.factoryJNDI = factoryJNDI;
}
public void setGateWay(String gateWay) {
this.gateWay = gateWay;
}
public void setMoQueueJNDI(String moQueueJNDI) {
this.moQueueJNDI = moQueueJNDI;
}
public void setMtQueueJNDI(String mtQueueJNDI) {
this.mtQueueJNDI = mtQueueJNDI;
}
public void setStatusQueueJNDI(String statusQueueJNDI) {
this.statusQueueJNDI = statusQueueJNDI;
}
public void setMtListener(JmsMtReceiver mtListener) {
this.mtListener = mtListener;
}
@SuppressWarnings("unchecked")
public void init() throws NamingException, JMSException {
props.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
props.put(Context.PROVIDER_URL, url);
props.put("java.naming.rmi.security.manager", "yes");
props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming");
connect();
}
public void connect() throws NamingException, JMSException {
context = new InitialContext(props);
ConnectionFactory connectionFactory =(ConnectionFactory)context.lookup(factoryJNDI);
queueConnection = (QueueConnection)connectionFactory.createConnection();
queueConnection.setExceptionListener(this);
mtSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
mtQueue = (Queue)context.lookup(mtQueueJNDI);
mtReceiver = mtSession.createReceiver(mtQueue,"gateway='"+gateWay+"'");
mtReceiver.setMessageListener(mtListener);
statusSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
statusQueue = (Queue)context.lookup(statusQueueJNDI);
statusSender = statusSession.createSender(statusQueue);
moSession = queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
moQueue = (Queue)context.lookup(moQueueJNDI);
moSender = moSession.createSender(moQueue);
queueConnection.start();
}
public void close() throws JMSException, NamingException {
if(mtSession != null) mtSession.close();
if(moSession != null) moSession.close();
if(statusSession != null) statusSession.close();
if(queueConnection != null) queueConnection.close();
if(context != null) context.close();
}
public void moSend(WireMessage wireMsg) throws JMSException {
ObjectMessage objMsg = moSession.createObjectMessage();
objMsg.setObject(wireMsg);
if(wireMsg instanceof MOSMS) {
moSender.send(moQueue,objMsg);
} else if(wireMsg instanceof MTReportStatus) {
statusSender.send(statusQueue,objMsg);
}
}
public void mtSend(MTSMS mt) throws JMSException {
if(mt.getGateway()==null || mt.getGateway().trim().equals("")){
return;
}
mtSender = mtSession.createSender(mtQueue);
ObjectMessage objMsg = mtSession.createObjectMessage();
objMsg.setStringProperty("gateway",mt.getGateway().toLowerCase());
objMsg.setObject((WireMessage)mt);
mtSender.send(mtQueue,objMsg);
}
public void onException(JMSException ex) {
if(ex instanceof org.jboss.mq.SpyJMSException) {
try {
close();
Thread.sleep(10000);
connect();
} catch (JMSException e) {
e.printStackTrace();
onException(ex);
} catch (NamingException e) {
e.printStackTrace();
onException(ex);
} catch (InterruptedException e) {
e.printStackTrace();
onException(ex);
}
}
}
public void test(int i) throws JMSException {
MTSMS mt = new MTSMS();
mt.setGateway("empp");
mt.setDestTermID("13610174205");
mt.setLongCode("55551883388");
//mt.setMessage("测试一下下234! " + (i+1));
mt.setMessage("12345678901234567890123456789012345678901234567890123456789012345678901234567890");
mt.setMsgType(MTSMS.MSG_TYPE_SMS);
mt.setNeedReportStatus(1);
mt.setSrcTermID("55551883388");
mt.setServiceID("555518833");
mtSend(mt);
/*MTSMS mt2 = new MTSMS();
mt2.setGateway("empp");
mt2.setDestTermID("13610174205");
mt2.setLongCode("55552008166");
mt2.setMessage("上门服务 " + (i+1));
mt2.setMsgType(MTSMS.MSG_TYPE_SMS);
mt2.setNeedReportStatus(1);
mt2.setSrcTermID("55552008166");
mt2.setServiceID("555520081");
mtSend(mt2);*/
}
public static void main(String[] arg) throws JMSException {
JmsService jms = new JmsService();
try {
jms.init();
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
for(int i=0;i<1;i++) {
jms.test(i);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -