Rabbitmq-Docker
参考
安装步骤
拉取镜像
1
2
3docker pull rabbitmq:management
注意:rabbitmq 是官方镜像,该镜像不带控制台。如果想要安装带控制台的镜像,则需要在拉取镜像时附带 tag 标签,例如:rabbitmq:management运行
1
2
3
4
5
6
7
8docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=123456 rabbitmq:management
参数说明:
--name:指定容器名称,名称简化
-d:后台运行
-p:将 mq 端口号映射到本地
-e RABBITMQ_DEFAULT_USER=admin:设置用户名为 admin
-e RABBITMQ_DEFAULT_PASS=123456:设置密码为 123456查看是否运行
1
docker ps
访问测试
http://localhost:15672/ admin 123456
开启 web stomp 插件「Websocket」
- 进入 rabbitmq 容器
1 | docker exec -it rabbitmq /bin/bash |
开启 web stomp 插件
1
rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq_web_stomp_examples
容器提交为镜像
1
2#先退出容器
docker commit rabbitmq rabbitmq:stomp #stomp 为镜像标签停止、删除原容器
1
2docker stop rabbitmq
docker rm -f rabbitmq创建新容器
1
docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 15670:15670 -p 15674:15674 rabbitmq:stomp
测试
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<html>
<head>
<title>My WebSocket</title>
<meta charset="UTF-8">
</head>
<body>
<div id="receiveMsg" style="width: 500px; height: 400px;">
</div>
<input type="text" id="sendMsg">
<button type="button" id="sendBtn">发送</button>
<button type="button" id="leaveBtn">断开</button>
</body>
<script src="http://www.jq22.com/jquery/1.7.2/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/stomp.js/2.3.3/stomp.js"></script>
<script src="https://cdn.bootcss.com/sockjs-client/1.1.4/sockjs.js"></script>
<script type="text/javascript">
if (typeof WebSocket == 'undefined') {
console.log('不支持websocket')
}
// 获得Stomp client对象
var url = "ws://127.0.0.1:15674/ws";
var client = Stomp.client(url);
// 定义连接成功回调函数
var on_connect = function (x) {
//data.body是接收到的数据
client.subscribe("/queue/test", function (data) {
console.log("收到数据:" + JSON.stringify(data));
var msg = data.body;
$('#receiveMsg').append("<p>对方:"+ msg +"</p>");
data.ack();
}, {ack: 'client'});
};
// 定义错误时回调函数
var on_error = function (error) {
console.log(error.headers.message);
};
// 连接RabbitMQ
client.connect('admin', '123456', on_connect, on_error, '/');
$("#leaveBtn").click(function () {
client.disconnect(function() {
console.log("See you next time!");
});
});
$("#sendBtn").click(function () {
var sendMsg = $("#sendMsg").val();
$('#receiveMsg').append("<p>我自己:"+ sendMsg +"</p>");
$("#sendMsg").val('');
client.send("/queue/test", {priority: 9}, sendMsg);
});
$(document).keydown(function (event) {
if (event.keyCode == 13) {
$("#sendBtn").click();
}
});
</script>
</html>
延时队列(delayed_message_exchange)插件
jeecgboot使用到了延迟队列,所以必须安装此插件
下载插件:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/v3.8.0
安装:https://my.oschina.net/jeecg/blog/4719615
1 | docker cp rabbitmq_delayed_message_exchange-3.8.0.ez rabbitmq:/plugins |
忘记密码
1 | # 新增用户 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 王文哲的博客!