先导入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