首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

JMS的一个简略同步实现

2013-02-18 
JMS的一个简单同步实现Sender类,主要用来发送JMS消息import java.io.OutputStreamWriterimport javax.jms

JMS的一个简单同步实现

Sender类,主要用来发送JMS消息

import java.io.OutputStreamWriter;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.Session;import javax.jms.TextMessage;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import org.apache.log4j.ConsoleAppender;import org.apache.log4j.Logger;import org.apache.log4j.PatternLayout;public class JMSSender {    private static final Logger log = Logger.getLogger(JMSSender.class);        private static QueueConnectionFactory factory = null;        private static String requestMessage = "Hello, JMS!";        public static void main(String[] args){        String initialContextFactory = "com.tibco.tibjms.naming.TibjmsInitialContextFactory";        String providerURL = "tibjmsnaming://gftsint.nam.nsroot.net:7222";        String queueConnectionFactory = "tech.na.cars.QueueCF";        String requestQueue = "tech.na.cars.vcs2.web.RequestQueue";                ConsoleAppender appender = new ConsoleAppender();        appender.setWriter(new OutputStreamWriter(System.out));        appender.setLayout(new PatternLayout("%-5p [%t]: %m%n"));        log.addAppender(appender);                int emsMessageTimeout = 60 * 1000 * 60 * 24;                try {            Context context = new InitialContext();            context.addToEnvironment(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);            context.addToEnvironment(Context.PROVIDER_URL, providerURL);            factory = (QueueConnectionFactory) context.lookup(queueConnectionFactory);            QueueConnection requestConnection = factory.createQueueConnection();            Session requestSession = requestConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);            Destination destination = (Queue) context.lookup(requestQueue);                        log.info("Create message producer....");            MessageProducer producer = requestSession.createProducer(destination);            producer.setDeliveryMode(DeliveryMode.PERSISTENT);            producer.setTimeToLive(emsMessageTimeout);                        log.info("Creating message....");            TextMessage message = requestSession.createTextMessage(requestMessage);                        log.info("Sending message....");            producer.send(message);        } catch (NamingException e) {            log.error("Exception", e);        } catch (JMSException e) {            log.error("Exception", e);        }    }}

?

接下来是receiver类,用来接收发送的消息:

import java.io.OutputStreamWriter;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.MessageConsumer;import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.Session;import javax.jms.TextMessage;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import org.apache.log4j.ConsoleAppender;import org.apache.log4j.Logger;import org.apache.log4j.PatternLayout;public class JMSReceiver {    private static final Logger log = Logger.getLogger(JMSReceiver.class);        private static QueueConnectionFactory factory = null;        public static void main(String[] args){        String initialContextFactory = "com.tibco.tibjms.naming.TibjmsInitialContextFactory";        String providerURL = "tibjmsnaming://gftsint.nam.nsroot.net:7222";        String queueConnectionFactory = "tech.na.cars.QueueCF";        String responseQueue = "tech.na.cars.vcs2.web.RequestQueue";                ConsoleAppender appender = new ConsoleAppender();        appender.setWriter(new OutputStreamWriter(System.out));        appender.setLayout(new PatternLayout("%-5p [%t]: %m%n"));        log.addAppender(appender);                try {            Context responseContext = new InitialContext();            responseContext.addToEnvironment(Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);            responseContext.addToEnvironment(Context.PROVIDER_URL, providerURL);            factory = (QueueConnectionFactory) responseContext.lookup(queueConnectionFactory);            QueueConnection responseConnection = factory.createQueueConnection();            Session responseSession = responseConnection.createSession(false, Session.CLIENT_ACKNOWLEDGE);            Destination responseDestination = (Queue) responseContext.lookup(responseQueue);                        log.info("Create message consumer....");            MessageConsumer consumer = responseSession.createConsumer(responseDestination);            responseConnection.start();            log.info("Receive message....");            Message message = null;            while(message == null){                message = consumer.receive();            }                        String stringMessage = ((TextMessage) message).getText();            log.info("The response message content is " + stringMessage);        } catch (NamingException e) {            log.error("Exception", e);        } catch (JMSException e) {            log.error("Exception", e);        }    }}

?手工编写代码的缺陷是每个类都得定义factory和URL等东西,不利于管理

热点排行