`
jibin6693923
  • 浏览: 13751 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

JMS学习(七)

阅读更多
    在下面的例子中,分别发送一个Persistent和nonpersistent的消息,然后关闭退出JMS。

import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class DeliveryModeSendTest {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
  
        Connection connection = factory.createConnection();
        connection.start();
      
        Queue queue = new ActiveMQQueue("testQueue");
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
              
        MessageProducer producer = session.createProducer(queue);
        producer.setDeliveryMode(DeliveryMode.PERSISTENT);
        producer.send(session.createTextMessage("A persistent Message"));
      
        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        producer.send(session.createTextMessage("A non persistent Message"));
      
        System.out.println("Send messages sucessfully!");
    }
}

    运行上面的程序,当输出“Send messages sucessfully!”时,说明两个消息都已经发送成功,然后我们结束它,来停止JMS Provider。

    接下来我们重新启动JMS Provicer,然后添加一个消费者:

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

public class DeliveryModeReceiveTest {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
  
        Connection connection = factory.createConnection();
        connection.start();
      
        Queue queue = new ActiveMQQueue("testQueue");
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      
        MessageConsumer comsumer = session.createConsumer(queue);
        comsumer.setMessageListener(new MessageListener(){
            public void onMessage(Message m) {
                try {
                    System.out.println("Consumer get " + ((TextMessage)m).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

运行上面的程序,可以得到下面的输出结果:

Consumer get A persistent Message

可以看出消息消费者只接收到一个消息,它是一个Persistent的消息。而刚才发送的non persistent消息已经丢失了。

另外, 如果发送一个non persistent消息, 而刚好这个时候没有消费者在监听, 这个消息也会丢失.
分享到:
评论

相关推荐

    JMS--J2EE培训材料

    通过本篇文章的学习,我们不仅了解了JMS的基本结构和开发实例,还深入了解了其高级接口、编程模型以及消息读取方式等内容。掌握JMS的核心概念和技术可以帮助开发者更好地构建复杂的企业级应用,提高系统的灵活性和可...

    JMS_ActiveMQ交流学习

    #### 七、应用场景 JMS及其实现如ActiveMQ适用于大规模和复杂的分布式系统中,尤其是在需要异步通信、解耦和可伸缩性的场景下,如: - 微服务架构中的消息传递。 - 大规模数据处理任务的协调。 - 实时数据分析系统的...

    JMS优秀硕士学位论文-目录

    根据提供的文件信息,我们可以梳理出一系列与JMS相关的硕士学位论文的研究方向及主要内容。JMS(Java Message ...通过对这些论文的学习和研究,可以全面了解JMS技术的最新发展动态及其在企业级应用中的重要作用。

    JMS简明教程--简体中文

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用集成的API...通过阅读"JMS简明教程.pdf",你可以进一步深化对JMS的理解,同时"中国java下载站.url"可能是获取更多Java资源和学习资料的链接。

    工作学习-消息中间件activeMQ学习总结

    本文总结了消息中间件ActiveMQ的学习要点,涵盖了为什么使用消息中间件、消息中间件的组成、JMS规范、ActiveMQ简介、消息中间件的应用场景等方面。 一、为什么使用消息中间件 使用消息中间件可以解决分布式系统...

    新手学习Java路线图

    - 掌握服务端消息传递机制,如JMS。 - 学习基于Web的服务技术,如WebService。 2. **面试技巧** - 学习如何准备Java相关职位的面试。 - 掌握面试中常见的问题及其解答技巧。 3. **就业指导** - 掌握求职过程...

    weblogic 学习资料大全

    WebLogic的主要功能包括:应用服务器、JMS消息队列、数据源管理、集群支持、安全管理、监控和诊断工具等。 二、WebLogic安装与配置 学习资料中可能包含WebLogic的安装步骤,包括下载、安装、配置环境变量等。配置...

    换个角度来思考:J2EE 学习导引(PDF)

    它基于Java SE标准,增加了企业级应用所需的组件和服务,如Servlets、JSP、EJB、JNDI、JMS、RMI等。本文档旨在提供一个J2EE的学习导引,帮助读者理解J2EE的核心技术和学习路径。 #### 二、学习路线图详解 J2EE的...

    j2ee学习经验和流程

    6. **其他API**:如JMS(Java消息服务)、JNDI(Java命名和目录接口)、JTA(Java事务API)等,都是J2EE应用开发中不可或缺的部分。 #### 五、实践项目的参与 理论学习之外,参与实际项目或完成一些小项目是非常...

    JBoss ESB 学习笔记

    - **重点**:学习如何使用JMS Router组件实现消息路由。 - **实现**:配置JMS Router,使其能够根据规则将消息路由到不同的目的地。 #### 十、第九个ESB应用JMS Topic - **重点**:使用JMS Topic组件实现发布订阅...

    Java从入门到实战学习源码.zip

    七、持续学习与进阶 随着技术的发展,Java不断推出新特性,如Java 8的Lambda表达式、Stream API,Java 11的模块系统等。同时,学习如何使用IDE(如IntelliJ IDEA或Eclipse)、版本控制(如Git)、构建工具(如Maven...

    J2EE学习课件(ppt)

    七、JNDI(Java Naming and Directory Interface) JNDI提供了一个统一的接口,用于查找和绑定分布式系统中的资源,如数据库连接池、EJB等。 八、JTA(Java Transaction API) JTA是Java平台的标准事务管理API,...

    Java学习的详细路线图

    - **JMS、JMX、JTA**:掌握Java消息服务(JMS)、Java管理扩展(JMX)、Java事务API(JTA)等相关技术。 - **SOA、WebService**:理解面向服务架构(SOA)的概念,学习WebService的开发方法。 - **工作流和JBPM**:了解工作...

    Java学习路线图

    3. **JMS**:学习Java消息服务,包括点对点和发布订阅模型。 4. **SOA**:理解Service-Oriented Architecture的概念及其在企业级应用中的作用。 **学习资源推荐:** - 《Java就业培训教程、视频》 通过以上八个...

    JBPM3学习笔记

    该系统基于Java平台,支持EJB和JMS,能够与各种企业级应用集成,是实现业务流程自动化和管理的理想选择。 **二、核心概念** 1. **工作流(Workflow)**:JBPM3允许用户通过WSDL(Web服务描述语言)或BPEL(Business...

    java的30个学习目标

    熟悉JNDI、JMS、JTA/JTS、JMX、JavaMail等J2EE技术,对于构建企业级应用和服务至关重要。 #### 十四、企业级JavaBeans(EJB) 最后,深入理解EJB(Stateless/Stateful Session Bean、Message-Driven Bean)的组件模式...

    Java学习思路.pdf

    七、Java资源学习 1. Oreilly:O'Reilly Media出版了一系列Java相关的书籍,适合不同水平的读者学习和参考。 2. Thinking in Java:《Java编程思想》是Java学习者必读的经典书籍之一,详细介绍了Java的原理和编程...

    weblogic 资源学习

    七、WebLogic性能优化 1. JVM配置:调整JVM堆大小、垃圾回收策略等,提升服务器性能。 2. 资源限制:设定服务器和应用程序的资源限制,避免资源耗尽导致的问题。 通过深入学习WebLogic,初级用户将能够熟练地配置和...

Global site tag (gtag.js) - Google Analytics