控制层
//新增队列(发送ObjectMessage消息)
@RequestMapping("/sendObjectMessage")
@ResponseBody
public String sendObjectMessage(String connectionFactory,String queueName,Student student) {
String msg=null;
try {
msg = mQQueueService.sendObjectMessage(connectionFactory, queueName,student);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return msg;
}
//消费队列(获取ObjectMessage消息)
@RequestMapping("/achieveObjectMessage")
@ResponseBody
public Student achieveObjectMessage(String connectionFactory,String queueName) {
Student student=null;
try {
student = mQQueueService.achieveObjectMessage(connectionFactory, queueName);
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return student;
}
业务层
// 发送ObjectMessage演示
@Override
public String sendObjectMessage(String connectionFactory, String queueName, Student student) throws JMSException {
ConnectionFactory cf = new ActiveMQConnectionFactory(connectionFactory);
Connection connection = cf.createConnection();
connection.start(); //
// 创建会话(需要创建事务,消息自动确认)
Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
// 循环创建队列
Destination destination = session.createQueue(queueName);
// 创建生产者,即消息发送方。
MessageProducer producer = session.createProducer(destination);
// 这里以一个学号对应一个学生为例
// key表示学号,key对应的value表示学生姓名
// 假如设置属性是班级编号1203
ObjectMessage objectMessage = session.createObjectMessage();
objectMessage.setStringProperty("msg", "新增学生。");
objectMessage.setObject(student);
producer.send(objectMessage);
try {
session.commit();
} finally {
session.close();
connection.close();
}
return "SUCCESS";
}
// 获取ObjectMessage演示
@Override
public Student achieveObjectMessage(String connectionFactory, String queueName) throws JMSException {
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(connectionFactory);
//允许用户关闭安全检查,并相信所有类。
cf.setTrustAllPackages(true);
Connection connection = cf.createConnection();
connection.start();
// 确认消息被接受
final Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(destination);
ObjectMessage objectMessage = (ObjectMessage) consumer.receive();
//获取学生
Student student = (Student) objectMessage.getObject();
//如果根据队列名称查询到了这个学生,则消费队列。
if (student != null) {
session.commit();
}
try {
return student;
} finally {
session.close();
connection.close();
}
}
新增队列
消费队列
启动ActiveMQ后台
//初始账号:admin
//初始密码:admin
http://192.168.0.113:8161/admin