`
sunshinevsboy
  • 浏览: 12927 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

jms基本用法

阅读更多

           下面具体来介绍服务器搭建,在http://openjms.sourceforge.net/downloads.html下载openJms,解压后在系统环境变量中加入OPENJMS_HOME=安装路径,在 \openjms-0.7.6.1\bin 里,有openJms的运行脚本,执行 startup 启动,弹出一个新的窗口,服务就运行在新窗口内,shutdown 为停止命令;下面写段JMS的测试代码:

import java.util.*;
import javax.jms.*;
import javax.naming.*;
public class QueueSend {
    public static void main(String[] args) {
        try {
            //取得JNDI上下文和连接
            Hashtable properties = new Hashtable();
            properties.put(
                Context.INITIAL_CONTEXT_FACTORY,
                "org.exolab.jms.jndi.InitialContextFactory");
//这个地方是核心部分需要服务器的支持-------------提供一个公共访问空间(客户端和服务端交互的空间)

            //openJms默认的端口是1099
            properties.put(Context.PROVIDER_URL,
                 "rmi://localhost:1099/");//在jms 服务器安装目录下config/openjms.xml中这个值可以根据需求修改
            Context context = new InitialContext(properties);
            //获得JMS信息连接队列工厂
            QueueConnectionFactory queueConnectionFactory =
                (QueueConnectionFactory) context.lookup(
                    "JmsQueueConnectionFactory");
            //获得JMS信息连接队列
            QueueConnection queueConnection =
                queueConnectionFactory.createQueueConnection();
            //产生队列Session,设置事务为false,自动应答消息接收
            QueueSession queueSession =
                queueConnection.createQueueSession(
                    false,
                    Session.AUTO_ACKNOWLEDGE);
            //获得默认内建在JMS里的队列之一:queue1
            Queue queue = (Queue) context.lookup("queue1");
            //产生JMS队列发送器
            QueueSender queueSender =
                queueSession.createSender(queue);
            //发送数据到JMS
            TextMessage message = queueSession.createTextMessage();
            message.setText("Hello, I'm openJms.");
            queueSender.send(message);
            System.out.println(
                ""信息写入JMS服务器队列");
            //以下做清除工作,代码略
            // ... ...
                       
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  以上是把我们新建的消息“Hello, I'm openJms” 发送到 jms服务器中queue1中,我们可以运行jms服务器bin下的admin.bat查看我们queue1中的消息数目1;

  下面我们可以或取jms服务器中我们刚才发送的消息代码如下:

   

import java.util.*;
import javax.jms.*;
import javax.naming.*;
public class QueueReceiveSynchronous {
    public static void main(String[] args) {
        try {
            //取得JNDI上下文和连接
            Hashtable properties = new Hashtable();
            properties.put(
                Context.INITIAL_CONTEXT_FACTORY,
                "org.exolab.jms.jndi.InitialContextFactory");//这个地方是核心部分需要服务器的支持-------------提供一个公共访问空间(客户端和服务端交互的空间)
            properties.put(Context.PROVIDER_URL,
                "rmi://localhost:1099/");
            Context context = new InitialContext(properties);
            //获得JMS信息连接队列工厂
            QueueConnectionFactory queueConnectionFactory =
                (QueueConnectionFactory) context.lookup(
                    "JmsQueueConnectionFactory");
            //获得JMS信息连接队列
            QueueConnection queueConnection =
                queueConnectionFactory.createQueueConnection();
            //启动接收队列线程
            queueConnection.start();
            //产生队列Session,设置事务为false,自动应答消息接收
            QueueSession queueSession =
                queueConnection.createQueueSession(
                    false,
                    Session.AUTO_ACKNOWLEDGE);
            //获得默认内建在JMS里的队列之一:queue1
            Queue queue = (Queue) context.lookup("queue1");
            //产生JMS队列接收器
            QueueReceiver queueReceiver =
                queueSession.createReceiver(queue);
            //通过同步的方法接收消息
            Message message = queueReceiver.receive();
            String messageText = null;
            if (message instanceof TextMessage)
                messageText = ((TextMessage) message).                         
                    getText();
            System.out.println(messageText);
            //以下做清除工作,代码略
            // ... ...
           
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

  以上的代码可以把我们刚才发送到JMS服务上的消息“Hello, I'm openJms”取出来;以上两个java类不需要新建WEB工程直接新建JAVA工程就可以,需要加入额外的包:

     commons-logging-1.0.4.jar

     excalibur-util-concurrent-1.3.1.jar

     jms-1.1.jar

     openjms-0.7.7-beta-1.jar

     openjms-common-0.7.7-beta-1.jar

     openjms-net-0.7.7-beta-1.jar

     openjms-tools-0.7.7-beta-1.jar

     spice-jndikit-1.2.jar

 

分享到:
评论

相关推荐

    JMS demo 及 资料

    在这个"JMS demo 及 资料"的压缩包中,我们可能找到了一些关于JMS的基础教程和示例代码,帮助初学者了解和掌握JMS的基本用法。 JMS的核心概念主要包括以下几个部分: 1. **消息**: 消息是JMS中的基本数据单元,它...

    JMS消息模型 JMS学习.doc

    Java 消息服务(JMS,Java Message Service)是一种用于在分布式系统中进行异步数据交换的API,它为应用程序提供了标准的接口来发送和接收消息。...理解和掌握JMS的基本概念和用法,对于开发企业级Java应用至关重要。

    javax.jms包,sun的JMS接口规范包

    3. **消息接口**:`javax.jms.Message`是所有JMS消息的基类,包含了一系列的方法,如`setObjectProperty`、`getStringProperty`、`getText`等,用于设置和获取消息属性和内容。JMS还定义了几个特定类型的消息接口,...

    使用jms 操作ActiveMQ

    首先,我们需要理解JMS的基本概念。在JMS中,消息生产者(Producer)负责创建和发送消息,而消息消费者(Consumer)则负责接收和处理这些消息。消息是通过队列(Queue)或主题(Topic)进行传输的。队列遵循FIFO...

    JMS相关的Source

    5. **MessageProducer** 和 **MessageConsumer**: 这两个是JMS API的基本组件,分别用于发送和接收消息。Spring的JmsTemplate是对这两个接口的高级封装。 6. **Transaction Management**: Spring可以提供基于JTA的...

    SpringJMS示例代码

    通过使用SpringJMS,开发者可以避免直接处理JMS API的复杂性,而是利用Spring的依赖注入和模板方法设计模式来创建消息驱动的应用程序。 2. **Java消息服务(JMS)** JMS是一种标准API,允许应用程序创建、发送、...

    Weblogic创建JMS服务器

    WebLogic Server是一款由Oracle公司提供的企业级Java应用服务器,它支持Java ...同时,熟悉源码和工具的使用能帮助你更好地诊断和优化JMS服务器的性能。在实际操作中,一定要遵循最佳实践,确保系统的稳定性和安全性。

    activeMQ-JMS实例

    首先,让我们理解ActiveMQ和JMS的基本概念。 ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了JMS规范,允许应用程序之间进行异步通信。JMS是一种标准接口,用于Java平台上的消息传递,提供了可靠的...

    JMS API JAVADOC大全

    JMS API JAVADOC是开发者的重要参考资料,详细解释了每个类、接口及其方法的使用,帮助开发人员更好地理解和应用JMS。 1. **基本概念** - **消息**: 在JMS中,消息是数据传输的基本单元,它包含了发送者想要传递的...

    JMS--J2EE培训材料

    本文档旨在详细介绍JMS的基本结构、开发实例,帮助读者从入门到精通。 #### 二、JMS的基本结构 JMS提供了两个主要的消息域:点对点(PTP)和发布/订阅(Pub/Sub)。 1. **点对点(PTP)**:在此模式下,消息发送给特定的...

    java-jms小例子

    本示例“java-jms小例子”旨在演示JMS的基本用法。JMS的核心概念包括消息生产者、消息消费者和消息队列/主题。在这个小例子中,我们将探讨如何创建这两者以及如何利用它们进行通信。 1. **消息生产者**:在JMS中,...

    JMS简单示例1

    1. **消息(Message)**:JMS中的基本数据单元,包含数据和元数据(如目标地址、优先级等)。消息可以是文本、对象、文件或其他形式的数据。 2. **消息生产者(Message Producer)**:创建并发送消息的应用程序或...

    JMS 中文 规范

    - **JDBC(Java Database Connectivity):** JMS可以与JDBC一起使用来处理数据库相关的消息。 - **JavaBeans:** JMS消息可以被封装在JavaBeans组件中,以便在不同的环境中传递。 - **EJB(Enterprise JavaBeans)...

    SpringJMS源码

    首先,我们需要了解JMS的基本概念。JMS包括两种主要的消息模型:点对点(Point-to-Point,P2P)和发布/订阅(Publish/Subscribe)。在点对点模型中,消息从一个生产者发送到一个队列,然后由一个或多个消费者接收。...

    JMS完全实例(八个实例)

    JMS的基本操作是发送和接收消息。在这些实例中,我们将看到如何使用生产者(Producer)创建消息并发送到队列(Queue)或主题(Topic)。消费者(Consumer)则从这些队列或主题中接收消息。理解如何创建消息对象,...

    JMS标准规范培训教程

    《JMS规范培训教程》这份文档很可能是深入理解JMS标准和实际应用的指南,它可能涵盖了JMS的基本概念、API用法、消息模型的比较、事务处理、消息持久化、故障恢复策略等内容。通过学习这份教程,开发者能够熟练地在...

    jms整合spring工程

    - **消息**:在JMS中,消息是数据传输的基本单位,包含要传递的信息。 - **消息队列(Message Queue)**:存储消息的临时容器,确保消息被正确地发送和接收。 - **生产者(Producer)**:创建并发送消息到消息...

    jms示例代码

    本示例代码将帮助我们深入理解JMS的基本用法和概念。 JMS的核心组件包括生产者(Producer)、消费者(Consumer)和消息队列(Message Queue)。生产者创建并发送消息,消费者接收并处理这些消息,而消息队列则作为...

Global site tag (gtag.js) - Google Analytics