⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmsservice.java

📁 移动empp网关
💻 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 + -