1.发送目录结构
pom.xml配置文件
4.1.3.RELEASE
5.7.0
5.12.1
1.2
2.5
2.0
3.3.2
3.3
1.8
org.springframework
spring-context
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-oxm
${spring.version}
com.alibaba
dubbo
org.springframework
spring
2.5.3
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jms
${spring.version}
org.springframework
spring-orm
3.1.4.RELEASE
org.springframework
spring-context-support
${spring.version}
org.apache.activemq
activemq-core
${activemq-core.version}
org.apache.activemq
activemq-pool
${activemq-pool.version}
javax.servlet
jsp-api
${jsp-api.version}
provided
commons-dbcp
commons-dbcp
1.4
org.apache.commons
commons-lang3
${commons-lang3.version}
commons-net
commons-net
${commons-net.version}
com.alibaba
fastjson
1.1.41
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.7
UTF-8
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
8080
/
web.xml文件配置
contextConfigLocation
classpath:spring-activemq.xml
org.springframework.web.context.ContextLoaderListener
springMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
springMVC
/*
spring-mvc.xml
spring-activemq.xml配置文件
queue
true
ProducerService
/**
* @Description:TODO
* @author:lijun
* @date:2018年12月19日 上午9:14:47
* @version V1.0
*/
package service;
import javax.jms.Destination;
/**
* 生产者接口
* create by lijun on 2018年12月19日
*
*/
public interface ProducerService {
/**
* 指定消息目的地的发送方法
* create by lijun on 2018年12月19日
*/
public void sendMessage(Destination destination,final String msg);
/**
* 默认消息目的地的方法
* create by lijun on 2018年12月19日
*/
public void sendMessage(final String msg);
}
ProducerServiceImpl
/**
* @Description:TODO
* @author:lijun
* @date:2018年12月19日
*
*/
package service.impl;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Service;
import service.ProducerService;
/**
* 生产者实现类
* create by lijun on 2018年12月19日
*
*/
@Service
public class ProducerServiceImpl implements ProducerService{
private static Logger loger = Logger.getLogger(ProducerServiceImpl.class.getName());
@Resource(name="jmsTemplate")
private JmsTemplate jmsTemplate;
/**
* 指定消息目的地的发送方法
* create by lijun on 2018年12月19日
*/
public void sendMessage(Destination destination,final String msg){
System.out.println(Thread.currentThread().getName()+" 向队列"+destination.toString()+"发送消息---------------------->"+msg);
loger.info(Thread.currentThread().getName()+" 向队列"+destination.toString()+"发送消息---------------------->"+msg);
jmsTemplate.send(destination,new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(msg);
}
});
}
/**
* 默认消息目的地的方法
* create by lijun on 2018年12月19日
*/
public void sendMessage(final String msg){
Destination destination = jmsTemplate.getDefaultDestination();
System.out.println(destination);
System.out.println(Thread.currentThread().getName()+" 向队列"+destination+"发送消息---------------------->"+msg);
System.out.println("2222");
loger.info(Thread.currentThread().getName()+" 向队列"+destination+"发送消息---------------------->"+msg);
jmsTemplate.send(new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(msg);
}
});
}
}
MessageController
/**
ha * @Description:
* @author:lijun
* @date:2018年12月18日 下午6:30:51
* @version V1.0
*/
package controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import service.ProducerService;
/**
* @Description:发送消息的controller
* @author: lijun
* @date: 2018年12月18日下午6:30:51
*/
@Controller
public class MessageController {
/**
* 注入ProducerService
*/
@Autowired(required=false)
ProducerService producerServiceImpl;
/**
*
* create by lijun on 2018年12月19日
* @Description:发送消息,调用service层的sendMessage()方法
* @param msg
*/
@ResponseBody
@RequestMapping(value="/sendMessage",method=RequestMethod.GET)
public void send(String msg) {
System.out.println("发送了");
//msg="helloActiveMq";
producerServiceImpl.sendMessage(msg);
}
}
二.接收目录结构
springactivemq.xml配置文件
queue
true
ConsumerService
/**
* @Description:TODO
* @author:lijun
* @date:2018年12月19日
*
*/
package service;
import javax.jms.TextMessage;
/**
* 消费接口
* create by lijun on 2018年12月19日
*
*/
public interface ConsumerService {
/**
*
* create by lijun on 2018年12月19日
* @Description:接收发送端的消息
* @return TextMessage
*/
public TextMessage receive();
}
ConsumerServiceImpl
/**
* @Description:TODO
* @author:lijun
* @date:2018年12月19日
*
*/
package service.impl;
import javax.annotation.Resource;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.TextMessage;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
import service.ConsumerService;
/**
* 消费接口的实现类
* create by lijun on 2018年12月19日
*
*/
@Service
public class ConsumerServiceImpl implements ConsumerService {
/**
* 消息目的地
* 通过name自动装配
*/
@Resource(name = "demoQueueDestination")
Destination destination;
/**
*
* 通过name自动装配
* 注入JmsTemplate类型的属性
*/
@Resource(name="jmsTemplate")
JmsTemplate jmsTemplate;
/**
* 接收消息
* create by lijun on 2018年12月19日
* @return TextMessage
*/
@Override
public TextMessage receive() {
TextMessage textMessage = (TextMessage) jmsTemplate.receive(destination);
try{
System.out.println("从队列" + destination+ "收到了消息:\t"
+ textMessage.getText().toString());
} catch (JMSException e) {
e.printStackTrace();
}
return textMessage;
}
}
ReceiveController
/**
* @Description:TODO
* @author:lijun
* @date:2018年12月19日
*
*/
package controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import service.ConsumerService;
/**
* 接收消息的Controller
* create by lijun on 2018年12月19日
*
*/
public class ReceiveController {
/**
* 自动装配
* 注入ConsumerService类型属性
*/
@Autowired(required=false)
ConsumerService consumerServiceImpl;
/**
*
* create by lijun on 2018年12月19日
* @Description:接收消息,映射路径是/receiveMessage
*/
@ResponseBody
@RequestMapping(value="/receiveMessage",method=RequestMethod.GET)
public void receive() {
consumerServiceImpl.receive();
}
}