`

spring 使用 ActiveMQ,JMS使用

阅读更多

 

MS 定义了两种方式:Quere(点对点);Topic(发布/订阅)。

ConnectionFactory 是连接工厂,负责创建Connection。

Connection 负责创建 Session。

Session 创建 MessageProducer(用来发消息) 和 MessageConsumer(用来接收消息)。

Destination 是消息的目的地。

 

下载 apache-activemq-5.3.0。http://activemq.apache.org/download.html,解压,

然后双击 bin/activemq.bat。运行后,可以在 http://localhost:8161/admin 观察。

也有 demo, http://localhost:8161/demo。把 activemq-all-5.3.0.jar 加入 classpath。

 

一  ActiveMQ的jms写法 

  1  消息发送类  

    

public class JMSsenderBean {
	public static void main(String[] args) throws Exception {  
		//连接工厂。连接工厂(ConnectionFactory)是由管理员创建,并绑定到JNDI树中。客户端使用JNDI查找连接工厂,然后利用连接工厂创建一个JMS连接。
	    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");  
	    // JMS连接。JMS连接(Connection)表示JMS客户端和服务器端之间的一个活动的连接,是由客户端通过调用连接工厂的方法建立的  
	    Connection connection = connectionFactory.createConnection();
	    //开启连接
	    connection.start();  
	    Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
	    Destination destination = session.createQueue("my-queue");  
	    MessageProducer producer = session.createProducer(destination);  
	    for(int i=0; i<3; i++) {  
	        MapMessage message = session.createMapMessage();  
	        message.setLong("count", new Date().getTime());  
	        Thread.sleep(1000);
	        //通过消息生产者发出消息  
	        producer.send(message);  
	    }  
	    session.commit();  
	    session.close();  
	    connection.close();  
	}  
 }

 

  2 消息接收类

  

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MapMessage;
import javax.jms.MessageConsumer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnectionFactory;
//消息接收类 
public class JMSreceive {
	public static void main(String[] args) throws Exception {  
	    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");  
	  
	    Connection connection = connectionFactory.createConnection();  
	    connection.start();  
	  
	    final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);  
	    Destination destination = session.createQueue("my-queue");  
	    MessageConsumer consumer = session.createConsumer(destination);  
	    /*//listener 方式 
	    consumer.setMessageListener(new MessageListener() { 
	 
	        public void onMessage(Message msg) { 
	            MapMessage message = (MapMessage) msg; 
	            //TODO something.... 
	            System.out.println("收到消息:" + new Date(message.getLong("count"))); 
	            session.commit(); 
	        } 
	    }); 
	    Thread.sleep(30000); 
	    */  
	    int i=0;  
	    while(i<3) {  
	        i++;  
	        MapMessage message = (MapMessage) consumer.receive();  
	        session.commit();  
	        System.out.println("收到消息:" + new Date(message.getLong("count")));  
	    }  
	  
	    session.close();  
	    connection.close();  
	}  
}

 

 

二 spring集成

  

   1 spring 配置文件

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
  
<!-- 在非 web / ejb 容器中使用 pool 时,要手动 stop,spring 不会为你执行 destroy-method 的方法  
    <bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop">  
        <property name="connectionFactory">  
            <bean class="org.apache.activemq.ActiveMQConnectionFactory">  
                <property name="brokerURL" value="tcp://localhost:61616" />  
            </bean>  
        </property>  
    </bean>  
-->  
    <bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">  
        <property name="brokerURL" value="tcp://localhost:61616" />  
    </bean> 

    <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">  
        <constructor-arg index="0" value="my-queue" />  
    </bean>  
    
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">  
        <property name="connectionFactory" ref="jmsFactory" />  
        <property name="defaultDestination" ref="destination" />  
        <property name="messageConverter">  
            <bean class="org.springframework.jms.support.converter.SimpleMessageConverter" />  
        </property>  
    </bean>  
</beans> 

 

 2   消息发送类

import java.util.Date;

import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Session;
import javax.mail.Message;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

public class JMSsenderBean_Spring {
	public static void main(String[] args) {  
	    ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:spring/applicationContext-jmx.xml");  
	  
	    JmsTemplate jmsTemplate = (JmsTemplate) ctx.getBean("jmsTemplate");  
	  
	    jmsTemplate.send(new MessageCreator() {  
	  
	        public MapMessage createMessage(Session session) throws JMSException { 
	        	
	            MapMessage mm = session.createMapMessage();  
	            mm.setLong("count", new Date().getTime());
	            
	            return mm;  
	        }  
	  
	    });  
	}   
 }

 3  消息接收类

  

import java.util.Date;
import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.jms.core.JmsTemplate;

public class JMSreceive_Spring {
	public static void main(String[] args) {  
	    ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:spring/applicationContext-jmx.xml");  
	  
	    JmsTemplate jmsTemplate = (JmsTemplate) ctx.getBean("jmsTemplate");  
	    while(true) {  
	        Map<String, Object> mm =  (Map<String, Object>) jmsTemplate.receiveAndConvert();  
	        System.out.println("收到消息:" + new Date((Long)mm.get("count")));
	        
	    }  
	} 
}

来自: http://blog.chenlb.com/2010/01/activemq-hello.html

分享到:
评论

相关推荐

    spring使用activeMQ实现消息发送

    Spring提供了`spring-jms`模块,它包含了一组丰富的API和配置选项,使得在Spring应用中集成ActiveMQ变得简单。通过使用`JmsTemplate`类,我们可以方便地发送和接收消息。 1. **配置ActiveMQ**:在开始之前,我们...

    Spring和ActiveMQ整合的完整实例

    3. **编写消息生产者**:在Spring应用中,使用JmsTemplate发送消息到ActiveMQ的队列或主题。可以使用convertAndSend方法,该方法会自动将对象转换为适合的消息类型。 4. **编写消息消费者**:创建实现了Message...

    jms Spring+ActiveMQ 5.4.2

    标题 "jms Spring+ActiveMQ 5.4.2" 涉及的是Java消息服务(JMS)在Spring框架中的应用,以及ActiveMQ作为消息代理的使用。在这个主题下,我们将深入探讨JMS的基本概念、Spring对JMS的支持以及ActiveMQ 5.4.2版本的...

    Spring整合Blazeds实现ActiveMQ JMS消息服务

    标题中的“Spring整合Blazeds实现ActiveMQ JMS消息服务”指的是在Java应用程序中使用Spring框架与Blazeds(一个Flex和Java之间的消息传递中间件)集成,通过ActiveMQ(一个流行的开源JMS提供商)来实现消息队列服务...

    spring 整合 activemq 生产者和消费者 案例源码

    Spring整合ActiveMQ是Java消息服务(JMS)在Spring框架中的应用,用于实现生产者与消费者的解耦。在这个案例中,我们将深入探讨如何配置和使用这两个组件,以便于理解它们的工作原理。 首先,ActiveMQ是Apache软件...

    Spring 和 activemq 搭建JMS开发系统示例

    本示例将教你如何使用Spring与Apache ActiveMQ来构建一个JMS开发系统。 **一、JMS基础** JMS是一个接口,定义了生产者、消费者和消息中间件之间的交互方式。它支持两种消息模型:点对点(Queue)和发布/订阅...

    SpringJMS整合ActiveMQ

    详细内容: SpringJMS整合ActiveMQ.doc 详细说明文档 apache-activemq-5.8.0-bin.zip ActiveMQ安装包 JMSTest.rar MyEclipse8.5下web工程

    spring使用activemq

    本篇文章将详细探讨如何在Spring环境中整合并使用ActiveMQ,帮助开发者更好地理解和运用这两个强大的工具。 首先,让我们了解Spring与ActiveMQ整合的基础概念。Spring框架提供了对多种消息中间件的集成支持,包括...

    Spring集成ActiveMQ配置

    Spring框架与ActiveMQ的集成,为开发者提供了一种高效、可靠的JMS消息处理机制。在企业级应用中,这种集成能够极大地提升系统的响应速度和容错能力,特别是在需要异步通信和分布式事务处理的场景下。下面,我们将...

    Spring+JMS+ActiveMQ+Tomcat实现消息服务的demo

    基于Spring+JMS+ActiveMQ+Tomcat,我使用的版本情况如下所示:Spring 3.2.0,ActiveMQ 5.4.3,Tomcat 6.0.43。本例通过详细的说明和注释,实现消息服务的基本功能:发送与接收。Spring对JMS提供了很好的支持,可以...

    activeMq jms需要的jar包

    7. spring-jms.jar(如果使用Spring框架):Spring对JMS提供了高级抽象和集成,使得在Spring应用中使用ActiveMQ更加方便。这个JAR包提供了Spring的JMS支持。 在实际开发中,将这些JAR包添加到项目的类路径中,可以...

    JMS之Spring +activeMQ实现消息队列

    总结起来,"JMS之Spring + ActiveMQ实现消息队列"涉及到的关键知识点包括:Spring框架的JMS支持、ActiveMQ的使用、ConnectionFactory的配置、JmsTemplate和MessageListener的实现,以及消息队列在解决系统解耦和异步...

    spring+activemq

    标题“spring+activemq”暗示了我们将探讨如何将Spring框架与ActiveMQ集成,以便利用JMS进行高效的消息传递。下面我们将深入讨论这个主题。 首先,**Spring对JMS的支持**:Spring框架提供了一套强大的JMS抽象层,...

    Spring和ActiveMQ的整合实例源码

    9. **Spring注解**:在提供的实例中,可能包含了使用注解的方式配置Spring与ActiveMQ的集成,如`@EnableJms`启动JMS支持,`@JmsListener`定义消息监听器等。 10. **Tomcat服务器**:Tomcat是一个流行的Java Web...

    spring整合jms+activemq

    Spring通过其`org.springframework.jms`包提供了丰富的JMS抽象,简化了JMS的使用。它提供了一种声明式的方式来配置JMS模板,使得开发者可以方便地发送和接收消息。此外,Spring还支持JMS监听器容器,使得消息的消费...

    spring2 activemq5 tomcat6构建jms

    标题“spring2 activemq5 tomcat6构建jms”涉及了几个关键的Java技术,主要集中在企业级应用开发中的消息传递系统。首先,我们来深入理解这些技术及其相互关系。 Spring框架是Java应用程序开发的一个核心工具,尤其...

    spring整合activemq的maven工程

    Spring通过其`spring-jms`模块提供了对JMS的支持,可以方便地与消息代理如ActiveMQ进行集成。主要涉及以下几个核心组件: 1. **ConnectionFactory**: 这是创建JMS连接的工厂,Spring通过`JmsTransactionManager`或`...

    spring整合Activemq源码

    Spring作为Java领域的主流框架,与ActiveMQ的集成使得这种消息中间件的使用更加便捷。本文将详细探讨Spring与ActiveMQ的整合过程,以及相关的知识点。 1. **Spring框架**:Spring是Java开发中的一个全功能框架,...

Global site tag (gtag.js) - Google Analytics