Queue实现的是点到点模型,在下面的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue中发送多个消息,我们依然采用ActiveMQ。
package com.bijian.study; import javax.jms.Connection; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.MessageProducer; 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 QueueTest { public static void main(String[] args) throws Exception { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616"); Connection connection = factory.createConnection(); connection.start(); // 创建一个Queue Queue queue = new ActiveMQQueue("testQueue"); // 创建一个Session Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); // 注册消费者1 MessageConsumer comsumer1 = session.createConsumer(queue); comsumer1.setMessageListener(new MessageListener() { public void onMessage(Message m) { try { System.out.println("Consumer1 get " + ((TextMessage) m).getText()); } catch (JMSException e) { e.printStackTrace(); } } }); // 注册消费者2 MessageConsumer comsumer2 = session.createConsumer(queue); comsumer2.setMessageListener(new MessageListener() { public void onMessage(Message m) { try { System.out.println("Consumer2 get " + ((TextMessage) m).getText()); } catch (JMSException e) { e.printStackTrace(); } } }); // 创建一个生产者,然后发送多个消息。 MessageProducer producer = session.createProducer(queue); for (int i = 0; i < 10; i++) { producer.send(session.createTextMessage("Message:" + i)); } } }
运行这个例子会得到下面的输出结果:
Consumer1 get Message:0 Consumer2 get Message:1 Consumer1 get Message:2 Consumer2 get Message:3 Consumer1 get Message:4 Consumer2 get Message:5 Consumer1 get Message:6 Consumer2 get Message:7 Consumer1 get Message:8 Consumer2 get Message:9
可以看出每个消息直被消费了一次,但是如果有多个消费者同时监听一个Queue的话,无法确定一个消息最终会被哪一个消费者消费。
文章来源:http://www.cnblogs.com/guthing/archive/2010/06/12/1757152.html
相关推荐
### 深入掌握 JMS(Java Message Service) #### JMS 基础概念 - **JMS**(Java Message Service)是一种Java平台中的消息中间件技术标准,它定义了一套标准API,用于应用程序之间的消息传递。JMS的出现极大地简化...
**正文** JMS(Java Message ...本教程的目的是帮助开发者掌握JMS的使用,从而能够更好地设计和实现基于消息传递的应用程序。无论你是初学者还是有经验的开发者,都可以从这个中文版的JMS规范培训教程中受益匪浅。
通过《Java开发实战经典》这本书的学习,读者不仅可以掌握Java语言的精髓,还能了解到实际开发中的最佳实践,提升编程能力,为参与复杂项目的开发打下坚实基础。书中的每个章节都可能包含丰富的示例代码,帮助读者...
根据提供的文件信息,以下是从标题、描述、...通过学习这些知识点,不仅可以帮助开发者深入了解 ActiveMQ 的工作原理,还能够掌握如何在实际项目中有效地利用 ActiveMQ 解决消息传递问题,提高系统的稳定性和扩展性。
这本书《ActiveMQ实战(英文版)》旨在深入探讨如何在实际环境中有效地使用和管理ActiveMQ。 ActiveMQ的核心功能包括: 1. **消息传递**:ActiveMQ作为消息代理,允许应用程序之间通过发送和接收消息进行异步通信。...
本文将深入探讨基于消息中间件的学习记录,包括Java消息服务(JMS)、先进消息队列协议(AMQP)以及两个流行的开源实现:ActiveMQ和RocketMQ。 首先,Java消息服务(JMS)是一种标准API,用于在Java应用程序之间...
在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...
《Java开发实战经典》是李兴华老师的一部著作,主要针对Java编程语言进行深入浅出的讲解,旨在帮助读者掌握Java开发的核心技能,并具备实际项目开发的能力。这本书的内容覆盖了Java开发的各个方面,包括基础语法、...
本节可能深入探讨了如何创建、管理和优化Destination,包括队列(Queue)和主题(Topic)的高级用法,以及如何处理并发访问和负载均衡,确保高效的消息传递。 2. **MessageDispatch高级特性**(第86、87、88、90节...
在这个“ActiveMQ实战demo”中,我们将深入探讨如何使用ActiveMQ进行消息发送和接收,并了解其工作原理。 首先,让我们了解一下JMS。JMS是Java平台上的一个标准接口,定义了生产、消费、管理和消息队列的标准API。...
"how2j_offline_2020.01.31.rar" 是一个专为Java初学者和进阶者准备的离线学习资源包,包含了丰富的Java编程知识和实战教程。这个压缩包旨在帮助用户在没有网络的情况下也能深入学习Java技术,从而提升其编程能力。 ...
《ActiveMQ in Action》是一本深入探讨Apache ActiveMQ的实战指南,主要面向那些希望理解和掌握消息中间件技术,特别是ActiveMQ的开发者和系统管理员。这本书详细介绍了如何利用ActiveMQ构建可扩展、高可用且可靠的...
7. 发送与接收消息:掌握编写程序来发送和接收消息的方法,使用API(如Java的JMS接口或C的MQSeries API)。 8. 配置通道:了解通道的作用,学习设置传输通道、服务器通道,进行SSL加密和认证配置。 四、高级特性 ...
本篇文章将深入探讨`activemq-example`,即ActiveMQ的实际应用案例,通过分析`activemq-in-action-read-only`中的内容,帮助读者理解并掌握ActiveMQ的核心概念和使用方法。 一、ActiveMQ基本概念 1. 消息与队列:...
本资源“实战EJB_CN”是一份针对EJB的中文入门指南,旨在帮助开发者快速掌握EJB的核心概念和技术,从而更好地开发和部署大型企业系统。 ### EJB简介 EJB是Java EE(Java Platform, Enterprise Edition)的一部分,...
《ActiveMQ in Action》这本书是关于消息中间件Apache ActiveMQ的实战指南,旨在帮助读者深入理解和熟练使用这一强大的开源消息代理。Apache ActiveMQ是Java消息服务(JMS)的实现,广泛应用于分布式系统中的异步...
#### 四、实战操作指南 1. **配置环境**: - 安装和配置WebSphere MQ服务器。 - 配置Java开发环境,包括安装必要的库和依赖项。 2. **示例代码分析**: - 提供了一些示例代码,用于演示如何使用Java API与...
通过这个实战项目,开发者可以深入理解如何在Java Web环境中使用ActiveMQ,以及如何解决在实际应用中可能出现的问题,如消息的可靠传输和幂等问题。同时,它也提供了一个良好的学习平台,帮助初学者掌握SSH与...
《Java EE核心框架实战(第2版)》的源代码包"JavaEECoreFrameworkPractisesV2Code-master"提供了一次深入理解Java企业级应用开发的宝贵机会。这个开源项目旨在帮助开发者们掌握Java EE平台的核心技术,包括但不限于...
- **适用人群**:本教程适用于初学者及具有一定Java基础的学习者,特别是那些希望深入了解并掌握EJB 3.0技术的开发者。 - **内容特色**:通过实例教学的方式,帮助读者从实践中学习和掌握EJB 3.0的核心概念和技术...