隨筆-88  評論-77  文章-48  trackbacks-0

          package com.zte.jms;

          import javax.jms.JMSException;
          import javax.jms.Message;
          import javax.jms.MessageListener;
          import javax.jms.Queue;
          import javax.jms.QueueConnection;
          import javax.jms.QueueConnectionFactory;
          import javax.jms.QueueReceiver;
          import javax.jms.QueueSender;
          import javax.jms.QueueSession;
          import javax.jms.TextMessage;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;

          import EDU.oswego.cs.dl.util.concurrent.CountDown;

          /**
          ?* A complete JMS client example program that sends N TextMessages to a Queue B
          ?* and asynchronously receives the messages as modified by TextMDB from Queue A.
          ?*
          ?* @author Scott.Stark@jboss.org
          ?* @version $Revision: 1.9 $
          ?*/
          public class SendRecvClient {
          ?static final int N = 10;

          ?static CountDown done = new CountDown(N);

          ?QueueConnection conn;

          ?QueueSession session;

          ?Queue queA;

          ?Queue queB;

          ?public static class ExListener implements MessageListener {
          ??public void onMessage(Message msg) {
          ???done.release();
          ???TextMessage tm = (TextMessage) msg;
          ???try {
          ????System.out.println("onMessage, recv text=" + tm.getText());
          ???} catch (Throwable t) {
          ????t.printStackTrace();
          ???}
          ??}
          ?}

          ?public void setupPTP() throws JMSException, NamingException {
          ??InitialContext iniCtx = InitContext.getInitContext();
          ??Object tmp = iniCtx.lookup("ConnectionFactory");
          ??QueueConnectionFactory qcf = (QueueConnectionFactory) tmp;
          ??conn = qcf.createQueueConnection();
          ??queA = (Queue) iniCtx.lookup("queue/A");
          ??queB = (Queue) iniCtx.lookup("queue/B");
          ??session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
          ??conn.start();
          ?}

          ?public void sendRecvAsync(String textBase) throws JMSException,
          ???NamingException, InterruptedException {
          ??System.out.println("Begin sendRecvAsync");

          ??// Setup the PTP connection, session
          ??setupPTP();

          ??// Set the async listener for queA
          ??QueueReceiver recv = session.createReceiver(queA);
          ??recv.setMessageListener(new ExListener());

          ??// Send a few text msgs to queB
          ??QueueSender send = session.createSender(queB);

          ??for (int m = 0; m < 10; m++) {
          ???TextMessage tm = session.createTextMessage(textBase + "#" + m);
          ???tm.setJMSReplyTo(queA);
          ???send.send(tm);
          ???System.out.println("sendRecvAsync, sent text=" + tm.getText());
          ??}
          ??System.out.println("End sendRecvAsync");
          ?}

          ?public void stop() throws JMSException {
          ??conn.stop();
          ??session.close();
          ??conn.close();
          ?}

          ?public static void main(String args[]) throws Exception {
          ??System.out.println("Begin SendRecvClient,now="
          ????+ System.currentTimeMillis());
          ??SendRecvClient client = new SendRecvClient();
          ??client.sendRecvAsync("A text msg");
          ??client.done.acquire();
          ??client.stop();
          ??System.exit(0);
          ??System.out.println("End SendRecvClient");
          ?}

          }

          posted on 2006-04-24 19:16 崛起的程序員 閱讀(340) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 安远县| 从江县| 新宾| 宾阳县| 丰都县| 丹阳市| 观塘区| 镶黄旗| 黔江区| 尚志市| 贺州市| 安吉县| 衡阳市| 洪雅县| 大方县| 桃园县| 青浦区| 利津县| 平顶山市| 雷山县| 西华县| 平果县| 清流县| 胶州市| 新巴尔虎右旗| 沾益县| 东乡县| 甘南县| 黄陵县| 会宁县| 景洪市| 临沂市| 巴林右旗| 绿春县| 南丰县| 博白县| 论坛| 汾阳市| 慈利县| 大邑县| 五峰|