1、需要加入的包
javax-jms的包中央库已经不可使用,所以要修改版本 如上图所示 ,也可以修改为2.0版本
2、配置jms的配置文件
配置jms服务器
<bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
配置activemq的连接池,对连接池 进行池化操作
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="connectionFactory" value="targetConnectionFactory"/>
<property name="maxConnections" value="100"/>
<property name="maximumActive" value="50"/>
</bean>
<!-- 创建spring提供的帮助类 jmsTemplate-->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<constructor-arg ref="cachingConnectionFactory"></constructor-arg>
</bean>
<!-- 配置发送消息队列 -->
<bean id="sendDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg ref="sendDestinationQueue"></constructor-arg>
</bean>
<!-- 创建spring提供的帮助类 jmsTemplate-->
<bean id="replyDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg ref="replyDestinationQueue"></constructor-arg>
</bean>
消息发送方,使用队列进行消息的存储
package com.yc.biz.impl;
import java.util.Map;
import javax.annotation.Resource;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.Session;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.jms.core.MessagePostProcessor;
import org.springframework.stereotype.Service;
import com.yc.biz.SendMessage;
@Service()
public class SendMessageImpl implements SendMessage {
private JmsTemplate jmsTemplate;
private Queue sendDestination;
private Queue replyDestination;
@Resource(name ="jmsTemplate")
public void setJmsTemplate(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
@Resource(name ="sendDestination")
public void setSendDestination(Queue sendDestination) {
this.sendDestination = sendDestination;
}
@Resource(name ="replyDestination")
public void setReplyDestination(Queue replyDestination) {
this.replyDestination = replyDestination;
}
public void sendMessage(Map<String,String> message) {
jmsTemplate.convertAndSend(sendDestination, message, new MessagePostProcessor() {
public Message postProcessMessage(Message message) throws JMSException {
message.setJMSReplyTo(replyDestination);
return message;
}
});
}
}