在下面的例子中,分别发送一个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不仅仅是Java消息服务的一个标准API,更是构建高效、可靠的企业级应用的基础。掌握JMS的基本概念、架构和应用场景对于任何希望在分布式环境中构建稳定、高性能系统的Java开发者...
通过本篇文章的学习,我们不仅了解了JMS的基本结构和开发实例,还深入了解了其高级接口、编程模型以及消息读取方式等内容。掌握JMS的核心概念和技术可以帮助开发者更好地构建复杂的企业级应用,提高系统的灵活性和可...
#### 七、应用场景 JMS及其实现如ActiveMQ适用于大规模和复杂的分布式系统中,尤其是在需要异步通信、解耦和可伸缩性的场景下,如: - 微服务架构中的消息传递。 - 大规模数据处理任务的协调。 - 实时数据分析系统的...
根据提供的文件信息,我们可以梳理出一系列与JMS相关的硕士学位论文的研究方向及主要内容。JMS(Java Message ...通过对这些论文的学习和研究,可以全面了解JMS技术的最新发展动态及其在企业级应用中的重要作用。
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用集成的API...通过阅读"JMS简明教程.pdf",你可以进一步深化对JMS的理解,同时"中国java下载站.url"可能是获取更多Java资源和学习资料的链接。
本文总结了消息中间件ActiveMQ的学习要点,涵盖了为什么使用消息中间件、消息中间件的组成、JMS规范、ActiveMQ简介、消息中间件的应用场景等方面。 一、为什么使用消息中间件 使用消息中间件可以解决分布式系统...
- 掌握服务端消息传递机制,如JMS。 - 学习基于Web的服务技术,如WebService。 2. **面试技巧** - 学习如何准备Java相关职位的面试。 - 掌握面试中常见的问题及其解答技巧。 3. **就业指导** - 掌握求职过程...
WebLogic的主要功能包括:应用服务器、JMS消息队列、数据源管理、集群支持、安全管理、监控和诊断工具等。 二、WebLogic安装与配置 学习资料中可能包含WebLogic的安装步骤,包括下载、安装、配置环境变量等。配置...
它基于Java SE标准,增加了企业级应用所需的组件和服务,如Servlets、JSP、EJB、JNDI、JMS、RMI等。本文档旨在提供一个J2EE的学习导引,帮助读者理解J2EE的核心技术和学习路径。 #### 二、学习路线图详解 J2EE的...
6. **其他API**:如JMS(Java消息服务)、JNDI(Java命名和目录接口)、JTA(Java事务API)等,都是J2EE应用开发中不可或缺的部分。 #### 五、实践项目的参与 理论学习之外,参与实际项目或完成一些小项目是非常...
- **重点**:学习如何使用JMS Router组件实现消息路由。 - **实现**:配置JMS Router,使其能够根据规则将消息路由到不同的目的地。 #### 十、第九个ESB应用JMS Topic - **重点**:使用JMS Topic组件实现发布订阅...
七、持续学习与进阶 随着技术的发展,Java不断推出新特性,如Java 8的Lambda表达式、Stream API,Java 11的模块系统等。同时,学习如何使用IDE(如IntelliJ IDEA或Eclipse)、版本控制(如Git)、构建工具(如Maven...
七、JNDI(Java Naming and Directory Interface) JNDI提供了一个统一的接口,用于查找和绑定分布式系统中的资源,如数据库连接池、EJB等。 八、JTA(Java Transaction API) JTA是Java平台的标准事务管理API,...
- **JMS、JMX、JTA**:掌握Java消息服务(JMS)、Java管理扩展(JMX)、Java事务API(JTA)等相关技术。 - **SOA、WebService**:理解面向服务架构(SOA)的概念,学习WebService的开发方法。 - **工作流和JBPM**:了解工作...
3. **JMS**:学习Java消息服务,包括点对点和发布订阅模型。 4. **SOA**:理解Service-Oriented Architecture的概念及其在企业级应用中的作用。 **学习资源推荐:** - 《Java就业培训教程、视频》 通过以上八个...
该系统基于Java平台,支持EJB和JMS,能够与各种企业级应用集成,是实现业务流程自动化和管理的理想选择。 **二、核心概念** 1. **工作流(Workflow)**:JBPM3允许用户通过WSDL(Web服务描述语言)或BPEL(Business...
熟悉JNDI、JMS、JTA/JTS、JMX、JavaMail等J2EE技术,对于构建企业级应用和服务至关重要。 #### 十四、企业级JavaBeans(EJB) 最后,深入理解EJB(Stateless/Stateful Session Bean、Message-Driven Bean)的组件模式...
七、Java资源学习 1. Oreilly:O'Reilly Media出版了一系列Java相关的书籍,适合不同水平的读者学习和参考。 2. Thinking in Java:《Java编程思想》是Java学习者必读的经典书籍之一,详细介绍了Java的原理和编程...
七、WebLogic性能优化 1. JVM配置:调整JVM堆大小、垃圾回收策略等,提升服务器性能。 2. 资源限制:设定服务器和应用程序的资源限制,避免资源耗尽导致的问题。 通过深入学习WebLogic,初级用户将能够熟练地配置和...