1,下载安装
去官方网站下载:http://activemq.apache.org/
解压后 D:\apache-activemq-5.15.0\bin\win64目录开启服务 activemq.bat 运行ActiveMQ程序(分为32位和64两种)
2,创建springboot项目 ,目录如下(不介绍怎么创建)
3,引入ActiveMQ的依赖
<!-- actionmq -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.15.0</version>
</dependency>
4,application.properties配置
server.port=8080
spring.mvc.view.prefix=/views/
spring.mvc.view.suffix=.jsp
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.pool.enabled=false
spring.activemq.pool.max-connections=50
spring.activemq.packages.trust-all=true
5,创建消息类
package com.example.demo.message;
import java.io.Serializable;
import java.util.Date;
public class Message implements Serializable{
private static final long serialVersionUID = 1L;
private String id;
private String from;
private String to;
private String text;
private Date time;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Date getTime() {
return time;
}
public void setTime(String time) {
this.time = new Date(Long.valueOf(time));
}
@Override
public String toString() {
return "Message: "+ from +"想告诉"+ to + text + time;
}
}
6,消息发送接口sendService.java
package com.example.demo.service;
import org.springframework.stereotype.Service;
import com.example.demo.message.Message;
@Service
public interface sendService {
void addMessage(Message message);
}
sendServiceImpl.java实现类
package com.example.demo.service.Impl;
import javax.jms.Destination;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
import com.example.demo.message.Message;
import com.example.demo.service.sendService;
@Service
public class sendServiceImpl implements sendService{
private final JmsTemplate jmsTemplate;
@Autowired
public sendServiceImpl(JmsTemplate jmsTemplate) {
this.jmsTemplate = jmsTemplate;
}
@Override
public void addMessage(Message message) {
Destination destination = new ActiveMQQueue("my-msg");
jmsTemplate.convertAndSend(destination, message);
}
}
7,订阅者ReceiveService.java
package com.example.demo.service;
import javax.jms.JMSException;
import org.springframework.stereotype.Service;
import com.example.demo.message.Message;
@Service
public interface ReceiveService {
void receiveMessage(Message message) throws JMSException;
}
实现类ReceiveServiceImpl.java
package com.example.demo.service.Impl;
import javax.jms.JMSException;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;
import com.example.demo.message.Message;
import com.example.demo.service.ReceiveService;
@Service
public class ReceiveServiceImpl implements ReceiveService{
/**
* 指定接受对象
*/
@JmsListener(destination = "my-msg")
@Override
public void receiveMessage(Message message) throws JMSException {
System.out.println("收到:" + message);
}
}
8,mq_controller.java
package com.example.demo.controler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.example.demo.message.Message;
import com.example.demo.service.Impl.sendServiceImpl;
@RestController
public class mq_controller {
@Autowired
private sendServiceImpl sendService;
@RequestMapping("/mq")
public ModelAndView index(){
return new ModelAndView("mq");
}
@RequestMapping("/send")
public String send(Message message){
System.out.println("前台:" + message);
sendService.addMessage(message);
return "ok";
}
}
9,mq.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jms</title>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<style>
.msg-wrap{
width: 600px;
margin: 25px auto;
box-shadow: 0 0 10px #dc143c;
border: 1px solid #f97991;
border-radius: 3px;
}
.msg-wrap .form-group{
margin: 15px;
}
.msg-wrap .form-group .form-control{
width: 100%;
height: 30px;
border: 1px solid #ddd;
border-radius: 3px;
text-indent: 8px;
}
.msg-wrap .form-group .textarea{
display: block;
font-size: 16px;
color: #ab1123;
padding: 8px;
border: 1px solid #ddd;
border-radius: 3px;
}
.btn{
display: inline-block;
padding: 8px 20px;
color: #fff;
background-color: crimson;
border-radius: 3px;
border: 1px solid crimson;
text-decoration: none;
}
</style>
<body>
<div class="msg-wrap">
<div class="form-group">
<input class="form-control" type="text" name="from" placeholder="发件人">
</div>
<div class="form-group">
<input class="form-control" type="text" name="to" placeholder="收件人">
</div>
<div class="form-group">
<textarea class="textarea" name="text"></textarea>
</div>
<div class="form-group">
<a href="javascript:void(0)" class="btn">发送</a>
</div>
</div>
</body>
<script type="text/javascript">
$(function(){
$('.btn').click(function(){
var id = new Date().getDate() + "" + new Date().getMinutes();
var from = $('input[name="from"]').val();
var to = $('input[name="to"]').val();
var text = $('textarea[name="text"]').val();
var time = new Date().getTime();
var url = "/send";
var args = {"id": id, "from": from, "to": to, "text": text, "time": time};
$.post(url, args, function(data){
$('input[name="from"]').val("");
$('input[name="to"]').val("");
$('textarea[name="text"]').val("");
});
});
});
</script>
</html>
10,启动项目 ,访问http://localhost:8080/mq
后台打印
希望对你有帮助,谢谢