科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道IBM MQSeries使用指南

IBM MQSeries使用指南

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

随着计算机网络和分布式应用的不断发展,远程消息传递越来越成为应用系统中不可缺少的组成部分。商业消息中间件的出现保证了消息传输的可靠性,高效率和安全性,同时也减少了系统的开发周期。

来源:希赛网 2008年4月21日

关键字: 传输 IBM 消息中间件 中间件

  • 评论
  • 分享微博
  • 分享邮件

    四.用 JMS 实现 MQ 编程

    上面我们说明了怎样用 JMSAdmin Tool 定义 MQ 对象的上下文。我们的最终目的是要用 JMS 来实现 MQ 编程,以实现在程序中对 MQ 队列进行收、发消息。所以,下面我们将重点讨论一下 MQ 的 JMS 实现。

    如果您对 JMS 编程很熟悉,那么您也就会用 JMS 来实现 MQ 编程,因为用 JMS 来编写 MQ 程序与编写一般的 JMS 程序没有太大的差别。举个例子,当我们想发送一条消息到 MQ 的队列中,再从该队列中取回消息时,我们编程时主要有四个步骤。首先我们要初始化在程序中要用到的对象,然后才可以发送消息到队列中去,再就是收取消息了,最后要清除那些永久对象。这些都和普通的 JMS 程序相当。程序的源代码如下:

    import java.util.Hashtable;

    import javax.jms.*;

    import javax.naming.*;

    import javax.naming.directory.*;

    public class sample {

    protected QueueConnectionFactory factory=null;

    protected QueueConnection connection;

    protected QueueSession queueSession;

    protected TextMessage outMessage;

    protected QueueSender queueSender;

    protected QueueReceiver queueReceiver;

    public static final String qcfLookup="EXAMPLEQCF";

    public static final String qLookup="EXAMPLEQL";

    public static final String icf = "com.sun.jndi.fscontext.RefFSContextFactory";

    public String url ="file:/d:/temp";

    public void sampleInit() throws Exception {

    Hashtable environment = new Hashtable();

    environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);

    environment.put(Context.PROVIDER_URL, url);

    environment.put(Context.REFERRAL, "throw");

    Context ctx=new InitialDirContext(environment);

    factory = (QueueConnectionFactory)ctx.lookup(qcfLookup);

    Queue q1=null;

    q1=(Queue)ctx.lookup(qLookup);

    connection = factory.createQueueConnection();

    queueSession = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

    queueSender = queueSession.createSender(q1);

    queueSender.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

    outMessage = queueSession.createTextMessage();

    queueReceiver = queueSession.createReceiver(q1);

    connection.start();

    }

    public void sendMessageOut(String message) throws JMSException {

    outMessage.setText(message);

    queueSender.send(outMessage);

    }

    public String receiveMessage() throws Exception{

    return ((TextMessage)queueReceiver.receive()).getText();

    }

    public void sampleClose() throws JMSException {

    queueSession.close();

    connection.close();

    }

    public static void main(String[] args){

    String rec;

    sample sp = new sample();

    try {

    sp.sampleInit();

    sp.sendMessageOut("Hello World!");

    java.lang.Thread.sleep(4000);

    rec=sp.receiveMessage();

    System.out.println("Receive text is : "+rec);

    sp.sampleClose();

    }catch(Exception e) {

    e.printStackTrace();

    }

    }

    }

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章