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

JMS学习(五)

阅读更多
    与Queue不同的是,Topic实现的是发布/订阅模型,在下面的例子中,启动2个消费者共同监听一个Topic,然后循环给这个Topic中发送多个消息。

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.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTopic;


public class TopicTest {

    public static void main(String[] args) throws Exception {
        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://localhost");
  
        Connection connection = factory.createConnection();
        connection.start();
      
        //创建一个Topic
        Topic topic= new ActiveMQTopic("testTopic");
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
       
        //注册消费者1
        MessageConsumer comsumer1 = session.createConsumer(topic);
        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(topic);
        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(topic);
        for(int i=0; i<10; i++){
            producer.send(session.createTextMessage("Message:" + i));
        }
    }

}

运行后得到下面的输出结果:

Consumer1 get Message:0
Consumer2 get Message:0
Consumer1 get Message:1
Consumer2 get Message:1
Consumer1 get Message:2
Consumer2 get Message:2
Consumer1 get Message:3
Consumer2 get Message:3
Consumer1 get Message:4
Consumer2 get Message:4
Consumer1 get Message:5
Consumer2 get Message:5
Consumer1 get Message:6
Consumer2 get Message:6
Consumer1 get Message:7
Consumer2 get Message:7
Consumer1 get Message:8
Consumer2 get Message:8
Consumer1 get Message:9
Consumer2 get Message:9

说明每一个消息都会被所有的消费者消费。
分享到:
评论

相关推荐

    JMS 学习资源

    ### JMS 学习资源详解 #### 一、JMS 基本概念与通信模型 JMS(Java Message Service)是一种广泛应用于企业级应用程序之间的消息传递标准,它定义了一系列接口,用于创建、发送、接收消息。JMS 的设计目标是简化...

    JBOSS建立JMS应用实例

    建议仔细阅读,结合实际操作进行学习。 六、MyTestWeb项目 这个项目的名称可能是包含一个或多个演示JMS功能的Web应用。可能包含了Web页面用于触发消息的发送,以及后台服务用于处理消息的接收和处理。通过部署和...

    JMS的中文教程(Java的消息驱动)

    通过本教程的学习,我们可以了解到JMS不仅仅是Java消息服务的一个标准API,更是构建高效、可靠的企业级应用的基础。掌握JMS的基本概念、架构和应用场景对于任何希望在分布式环境中构建稳定、高性能系统的Java开发者...

    activeMQ,JMS学习资料.pdf

    7. **消息(Message)**:包含消息头、属性和消息体,JMS定义了五种消息类型:TextMessage、MapMessage、BytesMessage、StreamMessage和ObjectMessage。 JMS提供了多种机制来确保消息的可靠性: - **消息确认...

    JMS--J2EE培训材料

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

    JMS标准规范培训教程

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

    JMS ACTIVEMQ 教程文档

    - **消息对象**:JMS定义了五种消息类型:TextMessage、ObjectMessage、BytesMessage、MapMessage和StreamMessage,分别用于传输文本、对象、字节流、键值对和数据流。 - **消息属性**:消息可以携带额外的属性,...

    JMS管理与开发手册.pdf

    不仅提供了关于JMS和TongLINK/Q的全面知识,还包含了大量实用的配置示例和代码片段,对于正在或计划在分布式系统中运用JMS和TongLINK/Q的IT专业人员而言,是不可或缺的学习资料。通过阅读本手册,开发者能够深入了解...

    一个很好的jms教程

    JMS教程是学习这一核心技术的关键,尤其对于那些希望在分布式系统中实现可靠且高效的消息交换的开发者来说。 ### 一、JMS基础 1. **消息模型**:JMS支持两种基本的消息模型——点对点(Point-to-Point, PTP)和...

    JMS_ActiveMQ交流学习

    #### 五、ActiveMQ的特点 1. **高性能** - ActiveMQ设计为高吞吐量和低延迟,适合处理大量消息。 2. **易用性** - 提供简单易用的API,方便开发者快速上手。 3. **丰富的功能** - 支持多种消息传递模式、持久化...

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

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

    JMS入门

    首先,要开始学习JMS,你可以从OpenJMS官网下载最新版本的软件包。在解压缩后,只需运行bin目录下的`startup.bat`文件即可启动服务。若需要管理界面,可以运行`admin.bat`。在samples目录下,有一些基础示例,通过...

    JMS简明教程--简体中文

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

    fuse esb mq jms

    根据提供的文件信息,我们可以归纳出以下几个关键的知识点: ### 一、Apache ActiveMQ简介 - **定义**:Apache ...通过深入学习和实践这些知识点,开发者可以更好地利用 ActiveMQ 构建高效、稳定的消息传递系统。

    ActiveMq-JMS好用实例详解

    通过本文档的学习,我们了解了ActiveMQ 的主要特点及其与Tomcat的整合方式。ActiveMQ 作为一个成熟的JMS Provider,不仅功能强大,而且易于集成到各种应用场景中。无论是对于初学者还是有经验的开发者来说,掌握...

    JMS-ActiveMQ入门实例

    3. **消息类型**:JMS定义了五种消息类型:`TextMessage`(包含文本数据)、`ObjectMessage`(包含Java对象)、`BytesMessage`(包含二进制数据)、`MapMessage`(包含键值对数据)和`StreamMessage`(包含有序的...

    品优购_day13_SpringJms_V1.31

    7. **JMS消息类型**:JMS定义了五种不同类型的消息,以满足不同数据格式的需求: - **TextMessage**:包含文本字符串。 - **MapMessage**:包含一组键值对。 - **ObjectMessage**:用于传输序列化Java对象。 - *...

Global site tag (gtag.js) - Google Analytics