`

ActiveMQ(五)——ActiviteMQ与Spring的集成

 
阅读更多

先导入spring相关的jar包:



 

再在src目录下添加spring配置文件applicaion.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    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-3.1.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    
    <!-- 连接池 -->
    <bean id="pooledConnectionFactory" 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"></property>
    	    </bean>
    	</property>    
    </bean>
    
    <!-- 连接工厂 -->
    <bean id="activeMQConnectionFatory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL" value="tcp://localhost:61616"></property>
    </bean>
    
    <!-- 配置消息目标 destination-->
    <bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
        <!-- 目标队列,在ActiveMQ管理员控制台创建 http://localhost:8161/admin/queues.jsp创建 -->
        <constructor-arg index="0" value="FouthQueue" /> <!-- 设置第一个参数为队列名 -->    
    </bean>
    
    <!-- 配置消息模板 jmsTemplate -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="activeMQConnectionFatory"></property>
        <property name="defaultDestination" ref="destination"></property>
        <property name="messageConverter">
            <bean class="org.springframework.jms.support.converter.SimpleMessageConverter" />
        </property>
    </bean>
    
</beans>

 

 

发送方代码:

package com.mycom.activemq;

import java.util.HashMap;
import java.util.Map;

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

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

/**
 * ActiviteMQ方式4:整合Spring 
 * 消息发送方(生产者)
 * 
 * @author guweiqiang
 */
public class SpringSender {

	/**
	 * 发送消息
	 */
	public static void sendMessage(final Map<String, Object> map) {
		// 读取Spring配置文件
		ApplicationContext context = new FileSystemXmlApplicationContext(
				"classpath:applicaion.xml");

		// 获取JmsTemplate对象
		JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("jmsTemplate");

		// 利用 JmsTemplate 发送消息
		jmsTemplate.send(new MessageCreator() {

			@Override
			public Message createMessage(Session session) throws JMSException {
				// 发送消息
				MapMessage mapMsg = session.createMapMessage();
				mapMsg.setInt("ID", (Integer) map.get("id"));
				mapMsg.setString("NAME", (String) map.get("name"));
				mapMsg.setInt("AGE", (Integer) map.get("age"));
				System.out.println(mapMsg);

				return mapMsg;
			}
		});
	}

	/**
	 * 测试方法
	 */
	public static void main(String[] args) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("id", 10043);
		map.put("name", "guweiqiang43");
		map.put("age", 143);
		SpringSender.sendMessage(map);
	}
}

 

接收方代码:

package com.mycom.activemq;

import java.util.Map;

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

/**
 * ActiviteMQ方式4:整合Spring 
 * 消息接收方(消费者)
 * 
 * @author guweiqiang
 */
public class SpringReceiver {

	/**
	 * 接收消息
	 */
	public static void receiveMessage() {
		// 读取Spring配置文件
		ApplicationContext context = new FileSystemXmlApplicationContext(
				"classpath:applicaion.xml");

		// 获取JmsTemplate对象
		JmsTemplate jmsTemplate = (JmsTemplate) context.getBean("jmsTemplate");

		// 利用 JmsTemplate 接收消息
		while (true) {
			@SuppressWarnings("unchecked")
			Map<String, Object> map = (Map<String, Object>) jmsTemplate
					.receiveAndConvert();
			System.out.println("ID:" + map.get("ID") + "\t NAME:"
					+ map.get("NAME") + "\t AGE:" + map.get("AGE"));
		}
	}

	/**
	 * 测试方法
	 */
	public static void main(String[] args) {
		SpringReceiver.receiveMessage();
	}
}

 

启动ActiveMQ,再在本地执行上述发送方和接收方代码,运行结果如下:

发送方console:

ActiveMQMapMessage {commandId = 0, responseRequired = false, messageId = null, originalDestination = null, originalTransactionId = null, producerId = null, destination = null, transactionId = null, expiration = 0, timestamp = 0, arrival = 0, brokerInTime = 0, brokerOutTime = 0, correlationId = null, replyTo = null, persistent = false, type = null, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null, marshalledProperties = null, dataStructure = null, redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties = false, readOnlyBody = false, droppable = false} ActiveMQMapMessage{ theTable = {NAME=guweiqiang43, AGE=143, ID=10043} }

 

接收方console:

ID:10043	 NAME:guweiqiang43	 AGE:143

 

 

 

 

 

 

 

  • 大小: 47.5 KB
分享到:
评论

相关推荐

    ActiveMQ实战——实现一个简易版的聊天室

    在本篇《ActiveMQ实战——实现一个简易版的聊天室》中,我们将深入探讨如何利用Apache ActiveMQ构建一个简单的在线聊天应用。ActiveMQ是Apache软件基金会的一个开源项目,它是一款功能强大的消息中间件,用于在...

    ActiveMQ 集群——JDBC Master Slave + Broker Cluster

    ActiveMQ 集群——JDBC Master Slave + Broker Cluster ActiveMQ 集群是指将多个 ActiveMQ 服务器组合在一起,以提高系统的可扩展性和可靠性。在这个集群中,我们可以使用 JDBC Master Slave 模式和 Broker Cluster...

    Spring集成ActiveMQ配置

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

    Spring-ActiveMQ.rar_Spring Activemq_activemq_activemq spring

    而Spring框架,作为一个Java平台的全功能模块化解决方案,提供了与ActiveMQ集成的能力,让开发者能够轻松地在Spring应用中使用消息队列。本篇将深入探讨Spring与ActiveMQ的集成及其配置过程。 首先,理解Spring与...

    消息队列:ActiveMQ:ActiveMQ的Spring集成.docx

    消息队列:ActiveMQ:ActiveMQ的Spring集成.docx

    ActiveMQ与spring集成实例之使用Maven构建

    标题中的“ActiveMQ与Spring集成实例之使用Maven构建”是指在Java开发环境中,通过Maven构建工具将Apache ActiveMQ消息中间件与Spring框架整合在一起的实际操作案例。这个主题涵盖了几大关键知识点: 1. **Apache ...

    ActiveMQ与spring集成实例

    本文将深入探讨如何将ActiveMQ与Spring框架集成,以便在实际项目中实现高效的消息传递。 首先,我们需要理解ActiveMQ的核心功能。ActiveMQ支持多种消息协议,如OpenWire、STOMP、AMQP、MQTT等,能够处理点对点...

    spring集成activemq例子demo

    以下将详细介绍如何进行Spring与ActiveMQ的集成,并提供一些关键知识点。 1. **安装配置ActiveMQ** - 首先,需要下载并安装ActiveMQ服务器。可以从官方网站(https://activemq.apache.org/)获取最新版本。 - 启动...

    activemq +jms(原生和集成spring-jms)

    在"activemq + jms(原生和集成spring-jms)"的主题中,我们将探讨如何使用ActiveMQ原生API以及结合Spring-JMS框架来实现消息队列的创建与使用,主要涵盖以下几个核心知识点: 1. **ActiveMQ的基本概念**:包括Broker...

    activemq与spring的整合案例

    本案例主要展示了如何在Spring应用中集成ActiveMQ,实现消息的发送和接收。首先,我们需要在项目中引入ActiveMQ的相关依赖。在Maven工程中,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.apache....

    ActiveMQ与spring集成实例之使用消息监听器

    **ActiveMQ与Spring集成实例详解** ActiveMQ是Apache软件基金会下的一个开源项目,它是一个功能丰富的Java消息服务(JMS)提供商,支持多种协议,并且能够处理大量的并发消息传输。而Spring框架则是一个广泛使用的...

    ActiveMQ与spring集成实例之使用消息转换器

    **ActiveMQ与Spring集成实例——使用消息转换器** 在企业级应用开发中,消息队列(Message Queue,MQ)作为一种解耦和异步处理的重要工具,被广泛应用。Apache ActiveMQ 是一个开源的消息中间件,它支持多种消息...

    activemq5.5.1 Spring模板

    本文将深入探讨ActiveMQ 5.5.1版本与Spring框架的集成,以及如何利用Spring的模板模式简化ActiveMQ的使用。 一、ActiveMQ基础介绍 ActiveMQ是Apache软件基金会下的一个项目,遵循JMS(Java消息服务)规范,支持多种...

    Spring集成ActiveMQ配置.docx

    Spring 集成 ActiveMQ 配置是指将 Spring 框架与 ActiveMQ 消息队列集成,以实现基于 JMS(Java Message Service)的消息传递。ActiveMQ 是 Apache 软件基金会的一个开源的消息队列系统,提供了高性能、可靠的消息...

    spring,mybatis,hibernate,activemq,redis,dubbo的集成

    【标题】"spring,mybatis,hibernate,activemq,redis,dubbo的集成" 这个标题提及的是一个综合性的Java开发项目,它整合了多个流行的技术框架和中间件,旨在提供一个全面的后端服务解决方案。让我们逐一探讨这些...

    ActiveMQ与Spring线程池整合实例

    ActiveMQ与Spring线程池整合的一个实例。 lib库没有上传。 对于实例的讲解,在竹子的论坛有我对这个实例的帖子(http://www.java2000.net/viewthread.jsp?tid=1167) lib中包含: apache-activemq-4.1.1.jar ...

    activemq学习(2) spring+activemq

    标题 "activemq学习(2) spring+activemq" 暗示了这篇内容将探讨如何在Spring框架中集成ActiveMQ,一个流行的开源消息代理和消息中间件。ActiveMQ允许应用程序之间通过消息传递进行通信,而Spring则是一个广泛使用...

Global site tag (gtag.js) - Google Analytics