`

深入掌握JMS(三):MessageListener

阅读更多

        消息的消费者接收消息可以采用两种方式:

        1.consumer.receive() 或 consumer.receive(int timeout); 

        2.注册一个MessageListener。 

        采用第一种方式,消息的接收者会一直等待下去,直到有消息到达,或者超时。后一种方式会注册一个监听器,当有消息到达的时候,会回调它的onMessage()方法。下面举例说明:

MessageReceive.java

package com.bijian.study;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
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 MessageReceive {

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

MessageSend.java

package com.bijian.study;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Message;
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 MessageSend {

	public static void main(String[] args) throws Exception {
		
		ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
		Connection connection = factory.createConnection();
		connection.start();
		Queue queue = new ActiveMQQueue("testQueue");
		final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		Message message = session.createTextMessage("Hello JMS!");
		MessageProducer producer = session.createProducer(queue);
		producer.send(message);
		System.out.println("Send Message Completed!");
	}
}

        先运行MessageReceive.java,再运行MessageSend.java,将会看到MessageSend.java将消息一发送成功,MessageReceive.java即获取到了。

 

文章来源:http://www.cnblogs.com/guthing/archive/2010/06/12/1757149.html

分享到:
评论

相关推荐

    SpringJMS示例代码

    - 消费者代码(Consumer)通常包含一个实现了`MessageListener`接口的类,这个类会被Spring容器自动初始化,并通过`<jms:listener-container>`配置绑定到特定的Destination。 6. **消息模型** SpringJMS支持两种...

    jms整合spring工程

    **正文** 在IT行业中,Java消息服务(Java Message Service,JMS)是一种标准接口,用于在应用程序之间交换异步消息。它提供了一种可靠的消息...通过深入研究该项目,可以掌握JMS和Spring集成的关键技术和最佳实践。

    java jms 源码都在其中

    - **MessageListener接口**:理解消息监听器如何工作,如何实现onMessage()方法来处理接收到的消息。 - **ConnectionFactory**:研究如何配置和创建ConnectionFactory,它是与消息中间件建立连接的关键。 - **...

    JMS--J2EE培训材料

    2. **异步**:应用程序可以通过注册一个`MessageListener`,当消息到达时,系统自动调用`MessageListener`的`onMessage()`方法。 #### 七、开发示例 下面是一个简单的JMS发送消息程序示例: ```java ...

    activeMQ-JMS实例

    在本文中,我们将深入探讨如何使用Spring MVC框架与ActiveMQ结合实现JMS(Java Message Service)实例。首先,让我们理解ActiveMQ和JMS的基本概念。 ActiveMQ是Apache软件基金会开发的一款开源消息代理,它实现了...

    jms 入门的几个小项目

    通过这些小项目,你可以深入理解JMS的工作原理,掌握其主要特性和使用场景,为构建更复杂的分布式系统打下坚实基础。在实践中,你可能会遇到各种挑战,但随着经验的增长,你会更好地了解如何利用JMS优化系统的性能和...

    JMS.rar_jms

    8. **消息监听器(MessageListener)**:通过实现MessageListener接口,消费者可以在接收到消息时自动调用onMessage()方法,实现异步处理。 在JMS技术文档中,你可能会找到关于如何设置JMS环境、创建连接工厂、建立...

    spring_activeMQ

    `messageHandler`是处理消息的类,需要实现`MessageListener`接口并提供`onMessage`方法。 **5. 示例代码解析** 压缩包中的`SpringActiveMQCustomer`和`SpringActiveMQProvide`两个文件分别代表了消费者和生产者的...

    spring-jms-4.3.4.RELEASE.zip

    3. **Message-driven POJOs (MDPs)**:Spring支持将普通的Java类转换为消息驱动的组件,只需实现MessageListener接口,即可处理由JMS消息触发的业务逻辑。 在Spring JMS 4.3.4.RELEASE中,主要的特性改进和优化包括...

    jms+sping+activeMq的例子serd和recevice

    4. 配置消息监听器:对于接收消息,可以使用`MessageListener`接口或者配置`DefaultMessageListenerContainer`。 5. 编写发送和接收消息的业务逻辑:在服务类中调用`JmsTemplate`的`send()`方法发送消息,而在监听器...

    JMS完全实例(八个实例)

    通过这八个实例的学习,你将能够全面掌握JMS的核心特性和使用方式,理解其在实际项目中的应用,提升你在企业级应用开发中的消息处理能力。同时,结合Spring框架的使用,能让你更好地在实际工作中利用JMS实现高效、...

    JMS Southbound 指南 jms_southbound_tutorial

    "tutorials"文件夹可能包含一系列逐步指导,从基础知识到高级概念,帮助开发者快速掌握JMS Southbound的使用。 总之,JMS Southbound指南是学习如何将应用程序连接到JMS提供者并有效地利用消息传递功能的重要资源。...

    JMS.rar_J2EE JMS_jms

    Java消息服务(Java Message Service,简称JMS)是Java平台上的一个标准API,它为分布式环境中...通过深入研究这份资料,你可以更好地掌握如何在J2EE应用中有效地利用JMS进行通信和数据交换,提升系统的稳定性和效率。

    spring activeMQ-demo 配置

    **三、编写MessageListener** `MessageListener`是处理接收到消息的接口,需要实现`onMessage(Message message)`方法。例如: ```java public class MessageListener implements MessageListener { @Override ...

    JMS学习资料,适合初始人员学习使用

    - JMS API的其他组件,如MessageListener接口,可以实现异步消息处理。 最后,实践是掌握JMS的关键。编写更多示例代码,尝试不同的消息类型、事务管理以及消息路由策略,将有助于你深入理解和应用JMS。记得在实践中...

    Spring In Action 使用Spring发送和接收JMS消息

    在Spring应用中,我们需要配置JMS相关的bean,如ConnectionFactory、Destination(Queue或Topic)、MessageListener等。这些可以通过XML或Java配置实现。 2.3 发送消息 Spring提供了JmsTemplate类,用于发送JMS消息...

    Java Message Service 基础教程

    通过理解和掌握JMS,开发者可以创建出高效、健壮的异步通信解决方案。文件列表中的内容可能涵盖了JMS的多个方面,包括基本概念、使用示例、以及可能的实践指导。通过深入阅读这些文档,你将能更好地理解并运用JMS来...

    spring+jms+activemq

    本文将深入探讨如何使用Spring框架与ActiveMQ结合实现基于JMS的消息传递系统。 首先,理解JMS的基本概念至关重要。JMS定义了生产者(Producer)、消费者(Consumer)和消息队列(Queue)或主题(Topic)等核心组件...

    Spring整合JMS.doc

    此外,通过Spring的配置文件或Java配置,可以定义消息监听器(MessageListener),以便在接收到消息时执行相应的业务逻辑。 六、案例分析与实践建议 在实际开发中,结合Spring Boot的特性,可以进一步简化JMS与...

    isa-jms-test:infoshare jms练习

    通过这个项目,学习者能够深入理解JMS的工作原理,掌握如何在实际项目中应用JMS进行信息交换和解耦系统组件。此外,也可能涉及事务管理、消息持久化、消息选择器等高级特性,这些都是JMS开发中的重要知识点。

Global site tag (gtag.js) - Google Analytics