<?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会自动根据类型转换
分享到:
相关推荐
将ActiveMQ与Spring整合,可以方便地在Spring应用中使用消息队列,简化配置,并提供事务性消息支持。 这个实例代码是将ActiveMQ与Spring进行整合的一个实际项目,可以在Tomcat服务器上运行。由于提供了所有必要的...
通过配置JmsTemplate,我们可以定义目的地(如队列或主题)、消息转换器以及错误处理策略。Spring还支持通过@Autowired注解自动注入MessageProducer和MessageConsumer,简化了消息生产者和消费者的创建。 ActiveMQ...
同时,可以使用Spring的`DefaultJmsListenerContainerFactory`配置监听器容器,动态生成实例,以适应多线程环境。 ```xml <bean id="pooledConnectionFactory" class="org.apache.activemq.pool....
9. **Spring注解**:在提供的实例中,可能包含了使用注解的方式配置Spring与ActiveMQ的集成,如`@EnableJms`启动JMS支持,`@JmsListener`定义消息监听器等。 10. **Tomcat服务器**:Tomcat是一个流行的Java Web...
本实例"Spring和ActiveMQ的整合实例源码ActiveMQSpringDemo"提供了一个完整的解决方案,帮助开发者了解如何在Spring环境中集成ActiveMQ进行消息队列的使用。 首先,Spring是一个广泛使用的Java企业级应用开发框架,...
在IT行业中,Spring Boot和...总之,Spring Boot与ActiveMQ的整合使得应用程序能够轻松地利用消息队列的优势,提升系统的稳定性和可扩展性。通过理解和实践这些知识点,开发者可以构建出更健壮、更灵活的应用系统。
这可以通过实现`MessageConverter`接口或使用内置的转换器如`SimpleMessageConverter`来完成。 综上所述,Spring整合JMS和ActivemQ提供了一套完整的解决方案,帮助开发者轻松地在应用中实现消息的发送和接收。通过...
【标题】"activemq-demo" 是一个基于Spring框架与Apache ActiveMQ集成的示例项目,旨在展示如何在实际应用中构建一个高效、可靠的消息传递系统。ActiveMQ是Apache软件基金会开发的一个开源消息代理,它遵循多种消息...
通过Spring Integration,我们可以利用配置元数据(XML或Java配置)轻松地定义消息通道、转换器和网关,以实现应用间的松耦合通信。 在项目中整合Spring和ActiveMQ,我们需要做以下几步: 1. **配置ActiveMQ**:...
- **功能**:ActiveMQ 的核心功能在于帮助实现高性能、高可用、可扩展、易于使用且安全的企业级面向消息的服务系统。 - **特点**: - 完全支持 JMS 1.1 和 J2EE 1.4 规范,包括持久化、XA 消息、事务等功能。 - ...
在本文中,我们将探讨如何在Spring中使用JMS进行异步传输,以及与ActiveMQ的结合实例。 首先,我们需要配置Spring的JMS支持。在Spring 2.0及更高版本中,Spring不仅支持消息的生产,还支持消息的异步消费。配置主要...
通过实现这个接口,我们可以自定义WebSocket的消息转换器、处理程序和消息传递策略。 2. **STOMP**: Simple Text Oriented Messaging Protocol(简单文本定向消息协议)是Spring WebSocket支持的一种二进制兼容的...
- **自定义转换器**:支持自定义转换器来处理特定类型的对象与XML之间的转换。 ###### 1.2.4 JMS JMS模块支持与消息中间件集成,如ActiveMQ、RabbitMQ等。 - **消息发送**:简化了消息发送的过程,使得消息传递...
在本文中,我们将深入探讨如何使用Spring Boot构建一个WebSocket服务器,并与MongoDB集成,特别是利用GridFS存储文件,包括图片。此外,我们还将讨论非GridFS的文件存储方式及其限制。 首先,Spring Boot是一个简化...
Spring的`MessageConverter`接口允许我们将Java对象与JMS消息进行转换,使得业务对象可以直接作为消息发送和接收,无需手动处理消息格式。 7. **容器集成** Spring提供多种容器集成,如`...
7. **消息转换器**: Spring JMS提供了一些内置的消息转换器,如`StringMessageConverter`,可以根据需要自定义转换规则,确保消息体能在消息生产者和消费者之间正确转换。 8. **Web层整合**: 将JMS与RESTful API...
- CXF可以很好地与Spring框架集成,通过Spring的依赖注入(DI)和AOP功能,可以方便地管理服务实例和实现事务控制。Spring的应用上下文可以用来配置和管理CXF的服务。 5. **WSDL First和Code First**: - CXF支持...
- **消息队列**:使用 JMS 组件与消息中间件(如 ActiveMQ)进行通信。 - **定时任务**:利用 Camel 的 Quartz 或 Cron 组件执行定时任务。 - **数据转换**:例如,XML 和 JSON 之间的转换,可能使用 Camel 的 ...
- `spring-mvc.xml`:主要处理Spring MVC的配置,如视图解析器、拦截器、处理器映射、消息转换器等。你可以在这里配置URL请求的映射规则和视图解析策略。 2. **MyBatis配置文件**: - `mybatis-config.xml`:...