`

ActiveMQ与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.0.xsd">
	<!--创建连接工厂 -->
	<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
		<property name="brokerURL" value="tcp://localhost:61616"></property>
	</bean>
	<!-- 声明ActiveMQ消息目标,目标可以是一个队列,也可以是一个主题ActiveMQTopic -->
	<bean id="destination" class="org.apache.activemq.command.ActiveMQQueue">
		<constructor-arg index="0"
			value="com.acca.activemq"></constructor-arg>
	</bean>
    <!---->
	<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
		<property name="connectionFactory" ref="connectionFactory"></property>
		<property name="defaultDestination" ref="destination"></property>
		<property name="receiveTimeout" value="600"></property>
        <property name="messageConverter" ref="myConvert"></property>
	</bean>
	<bean id="sender" class="com.acca.activemq.Sender">
		<property name="jmsTemplate" ref="jmsTemplate"></property>

	</bean>
	<bean id="receiver" class="com.acca.activemq.Receiver">
		<property name="jmsTemplate" ref="jmsTemplate"></property>
	</bean>
	<!-- 消息转换器 -->
	<bean id="myConvert" class="com.acca.activemq.convert.MyConvert">
	</bean>
	

</beans>
 
/*
 * Copyright (c) 2012-2032 Accounting Center of China Aviation(ACCA).
 * All Rights Reserved.
 */
package com.acca.activemq.convert;

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

import org.apache.activemq.command.ActiveMQObjectMessage;
import org.springframework.jms.support.converter.MessageConversionException;
import org.springframework.jms.support.converter.MessageConverter;

import com.acca.activemq.entity.User;

/**
 * 
 * 消息转换器
 * 
 * @author zhouhua, 2012-12-25
 */
public class MyConvert implements MessageConverter {

    /**
     * @param arg0
     * @return
     * @throws JMSException
     * @throws MessageConversionException
     * @see org.springframework.jms.support.converter.MessageConverter#fromMessage(javax.jms.Message)
     */
    @Override
    public Object fromMessage(Message message) throws JMSException, MessageConversionException {
        User user=null;
            if(message instanceof ActiveMQObjectMessage){
                ActiveMQObjectMessage aMsg = (ActiveMQObjectMessage) message; 
                 user=(User) aMsg.getObject();
            }
        return user;
    }

    /**
     * @param arg0
     * @param arg1
     * @return
     * @throws JMSException
     * @throws MessageConversionException
     * @see org.springframework.jms.support.converter.MessageConverter#toMessage(java.lang.Object, javax.jms.Session)
     */
    @Override
    public Message toMessage(Object object, Session session) throws JMSException,
        MessageConversionException {
        
        ActiveMQObjectMessage msg = (ActiveMQObjectMessage) session.createObjectMessage();
        msg.setObject((User) object);
        return msg; 
    }

}
 
/*
 * Copyright (c) 2012-2032 Accounting Center of China Aviation(ACCA).
 * All Rights Reserved.
 */
package com.acca.activemq;

import javax.jms.JMSException;
import javax.jms.MapMessage;

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.JmsUtils;

import com.acca.activemq.entity.User;

/**
 * 
 * 
 * 
 * @author zhouhua, 2012-12-25
 */
public class Receiver {
    private JmsTemplate jmsTemplate;

    // getter and setter
    public JmsTemplate getJmsTemplate() {
        return jmsTemplate;
    }

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    /**
     * 构造函数
     */
    public Receiver() {
    }

    public User receiveMessage() {
        User user=null;
        user=(User) jmsTemplate.receiveAndConvert();
        return user;
    }
}
 
/*
 * Copyright (c) 2012-2032 Accounting Center of China Aviation(ACCA).
 * All Rights Reserved.
 */
package com.acca.activemq;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.acca.activemq.entity.User;

/**
 * 
 * 
 * 
 * @author zhouhua, 2012-12-25
 */
public class ReceiverTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Receiver receiver = (Receiver) context.getBean("receiver");
        User user=receiver.receiveMessage();
        System.out.print("地址:"+user.getAddress()+"姓名:"+user.getUserName());
    }

}
 
/*
    /*
 * Copyright (c) 2012-2032 Accounting Center of China Aviation(ACCA).
 * All Rights Reserved.
 */
package com.acca.activemq;

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

import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;

import com.acca.activemq.entity.User;

/**
 * 
 * 
 * 
 * @author zhouhua, 2012-12-25
 */
public class Sender {

    private JmsTemplate jmsTemplate;

    // getter and setter
    public JmsTemplate getJmsTemplate() {
        return jmsTemplate;
    }

    public void setJmsTemplate(JmsTemplate jmsTemplate) {
        this.jmsTemplate = jmsTemplate;
    }

    public void sendInfo() {
        User user=new User();
        user.setAddress("北京市");
        user.setUserName("张三");
        jmsTemplate.convertAndSend(user);
    }
}
 
/*
 * Copyright (c) 2012-2032 Accounting Center of China Aviation(ACCA).
 * All Rights Reserved.
 */
package com.acca.activemq;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 
 * 
 *
 * @author zhouhua, 2012-12-25
 */
public class SenderTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        Sender sender = (Sender) context.getBean("sender");
        sender.sendInfo();
    }

}
 
/*
 * Copyright (c) 2012-2032 Accounting Center of China Aviation(ACCA).
 * All Rights Reserved.
 */
package com.acca.activemq.entity;

import java.io.Serializable;

/**
 * 
 * 
 *
 * @author zhouhua, 2012-12-25
 */
public class User implements Serializable {

    private String userName;
    private String address;

    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }

    /**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * @return the address
     */
    public String getAddress() {
        return address;
    }

    /**
     * @param address the address to set
     */
    public void setAddress(String address) {
        this.address = address;
    }

}
 
消息转换器主要目的将消息以pojo的形式传送,消息转换器在配置文件中配置好即可,JmsTemplete会自动根据类型转换
 
2
0
分享到:
评论

相关推荐

    activemq整合spring完整实例代码(内含所有相关jar包)

    将ActiveMQ与Spring整合,可以方便地在Spring应用中使用消息队列,简化配置,并提供事务性消息支持。 这个实例代码是将ActiveMQ与Spring进行整合的一个实际项目,可以在Tomcat服务器上运行。由于提供了所有必要的...

    Spring和ActiveMQ整合的完整实例

    通过配置JmsTemplate,我们可以定义目的地(如队列或主题)、消息转换器以及错误处理策略。Spring还支持通过@Autowired注解自动注入MessageProducer和MessageConsumer,简化了消息生产者和消费者的创建。 ActiveMQ...

    ActiveMQ与spring整合封装

    同时,可以使用Spring的`DefaultJmsListenerContainerFactory`配置监听器容器,动态生成实例,以适应多线程环境。 ```xml &lt;bean id="pooledConnectionFactory" class="org.apache.activemq.pool....

    Spring和ActiveMQ的整合实例源码

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

    Spring和ActiveMQ的整合实例源码ActiveMQSpringDemo.zip

    本实例"Spring和ActiveMQ的整合实例源码ActiveMQSpringDemo"提供了一个完整的解决方案,帮助开发者了解如何在Spring环境中集成ActiveMQ进行消息队列的使用。 首先,Spring是一个广泛使用的Java企业级应用开发框架,...

    Springboot和ActiveMQ的整合实例

    在IT行业中,Spring Boot和...总之,Spring Boot与ActiveMQ的整合使得应用程序能够轻松地利用消息队列的优势,提升系统的稳定性和可扩展性。通过理解和实践这些知识点,开发者可以构建出更健壮、更灵活的应用系统。

    spring整合jms+activemq

    这可以通过实现`MessageConverter`接口或使用内置的转换器如`SimpleMessageConverter`来完成。 综上所述,Spring整合JMS和ActivemQ提供了一套完整的解决方案,帮助开发者轻松地在应用中实现消息的发送和接收。通过...

    activemq-demo

    【标题】"activemq-demo" 是一个基于Spring框架与Apache ActiveMQ集成的示例项目,旨在展示如何在实际应用中构建一个高效、可靠的消息传递系统。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它遵循多种消息...

    多个spring 和ActiveMQ结合的项目

    通过Spring Integration,我们可以利用配置元数据(XML或Java配置)轻松地定义消息通道、转换器和网关,以实现应用间的松耦合通信。 在项目中整合Spring和ActiveMQ,我们需要做以下几步: 1. **配置ActiveMQ**:...

    JMS-Spring

    在本文中,我们将探讨如何在Spring中使用JMS进行异步传输,以及与ActiveMQ的结合实例。 首先,我们需要配置Spring的JMS支持。在Spring 2.0及更高版本中,Spring不仅支持消息的生产,还支持消息的异步消费。配置主要...

    Spring-websocket v1.0.zip

    通过实现这个接口,我们可以自定义WebSocket的消息转换器、处理程序和消息传递策略。 2. **STOMP**: Simple Text Oriented Messaging Protocol(简单文本定向消息协议)是Spring WebSocket支持的一种二进制兼容的...

    Spring核心知识点

    - **自定义转换器**:支持自定义转换器来处理特定类型的对象与XML之间的转换。 ###### 1.2.4 JMS JMS模块支持与消息中间件集成,如ActiveMQ、RabbitMQ等。 - **消息发送**:简化了消息发送的过程,使得消息传递...

    spring boot websocket , mongoDBd存文件 图片服务器

    在本文中,我们将深入探讨如何使用Spring Boot构建一个WebSocket服务器,并与MongoDB集成,特别是利用GridFS存储文件,包括图片。此外,我们还将讨论非GridFS的文件存储方式及其限制。 首先,Spring Boot是一个简化...

    JMS整合Spirng

    Spring的`MessageConverter`接口允许我们将Java对象与JMS消息进行转换,使得业务对象可以直接作为消息发送和接收,无需手动处理消息格式。 7. **容器集成** Spring提供多种容器集成,如`...

    sample-spring-boot-war-jms:使用JPA和Spring-Boot的示例Spring JMS

    7. **消息转换器**: Spring JMS提供了一些内置的消息转换器,如`StringMessageConverter`,可以根据需要自定义转换规则,确保消息体能在消息生产者和消费者之间正确转换。 8. **Web层整合**: 将JMS与RESTful API...

    cxf webservice所需jar包

    - CXF可以很好地与Spring框架集成,通过Spring的依赖注入(DI)和AOP功能,可以方便地管理服务实例和实现事务控制。Spring的应用上下文可以用来配置和管理CXF的服务。 5. **WSDL First和Code First**: - CXF支持...

    camel-spring-boot-examples:Apache Camel Spring引导示例

    - **消息队列**:使用 JMS 组件与消息中间件(如 ActiveMQ)进行通信。 - **定时任务**:利用 Camel 的 Quartz 或 Cron 组件执行定时任务。 - **数据转换**:例如,XML 和 JSON 之间的转换,可能使用 Camel 的 ...

    ssm 常见配置文件

    - `spring-mvc.xml`:主要处理Spring MVC的配置,如视图解析器、拦截器、处理器映射、消息转换器等。你可以在这里配置URL请求的映射规则和视图解析策略。 2. **MyBatis配置文件**: - `mybatis-config.xml`:...

Global site tag (gtag.js) - Google Analytics