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

JMS学习(四)

阅读更多
    Queue实现的是点到点模型,在下面的例子中,启动2个消费者共同监听一个Queue,然后循环给这个Queue中发送多个消息,我们依然采用ActiveMQ。

import javax.jms.Connection;
import javax.jms.DeliveryMode;
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("vm://localhost");
  
        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的话,无法确定一个消息最终会被哪一个消费者消费。
分享到:
评论

相关推荐

    JBOSS建立JMS应用实例

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

    JMS--J2EE培训材料

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

    JMS标准规范培训教程

    四、SUN MQ与JMS SUN MQ(现已被IBM WebSphere MQ取代)是遵循JMS规范的一个具体实现,它提供了一种高效、可靠的分布式消息传递机制。SUN MQ支持JMS接口,允许开发者使用JMS API进行编程,同时提供了丰富的管理和...

    JMS管理与开发手册.pdf

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

    JMS 1.1 API JAVADOC 中文版 chm

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。...CHM文件是一种常见的帮助文档格式,可以在Windows环境下离线查看,方便开发者随时查询和学习。

    一个很好的jms教程

    ### 四、JMS消息模式 1. **同步和异步**:JMS允许同步(阻塞直到消息到达)和异步(回调或轮询)消费模式。 2. **事务处理**:JMS支持两种类型的事务——本地事务(Session级别的)和分布式事务(X/Open XA)。 3...

    JMS_ActiveMQ交流学习

    #### 四、ActiveMQ概述 **ActiveMQ** 是Apache出品的一款开源消息中间件,它实现了JMS规范,并提供了额外的功能和扩展性。ActiveMQ支持多种协议,如AMQP、STOMP等,这使得它可以与其他非Java环境下的消息系统集成。 ...

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

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

    JMS简明教程--简体中文

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

    基于消息中间件的学习记录以及源码示例【JMS、AMQP、ActiveMQ、RocketMQ】.zip

    通过上述四个消息中间件的学习和源码分析,你可以掌握消息中间件的核心概念和技术,这对于构建高效、稳定的分布式系统至关重要。在实践中,你可以结合具体的业务场景,选择适合的消息中间件,并优化其配置,以满足...

    JAVA企业级API-JMS

    #### 四、JMS发送消息客户端编码示例 下面是一个简单的JMS发送消息客户端的编码示例,用于展示如何使用JMS API来发送消息: ```java package wf.jms.send; import javax.jms.*; import javax.naming.Context; ...

    fuse esb mq jms

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

    ActiveMq-JMS好用实例详解

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

    was6培训资料:L08-WASv6_Service Integration and JMS.pdf

    - 通过实践操作,学习如何配置并运行基于WAS v6的服务集成和JMS相关资源。 - 探索服务集成资源与JMS资源之间的映射关系,并了解这些资源如何在WebSphere应用服务器的命名空间中绑定。 **二、实验内容概述** - **...

    ActiveMQ+Camel+Spring+jms Demo(一)

    在本项目中,“ActiveMQ+Camel+Spring+jms Demo(一)”是一个结合了四个关键技术的示例,旨在展示如何构建一个基于消息中间件的分布式应用程序。这四个技术分别是ActiveMQ、Apache Camel、Spring框架以及Java消息...

Global site tag (gtag.js) - Google Analytics