参考

http://doc.jeecg.com/2315799

安装步骤

Stomp Over Websocket 文档

  1. 拉取镜像

    1
    2
    3
    docker pull rabbitmq:management

    注意:rabbitmq 是官方镜像,该镜像不带控制台。如果想要安装带控制台的镜像,则需要在拉取镜像时附带 tag 标签,例如:rabbitmq:management
  2. 运行

    1
    2
    3
    4
    5
    6
    7
    8
    docker 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
  3. 查看是否运行

    1
    docker ps
  4. 访问测试

    http://localhost:15672/ admin 123456

开启 web stomp 插件「Websocket」

  1. 进入 rabbitmq 容器
1
docker exec -it rabbitmq /bin/bash
  1. 开启 web stomp 插件

    1
    rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq_web_stomp_examples
  2. 容器提交为镜像

    1
    2
    #先退出容器
    docker commit rabbitmq rabbitmq:stomp #stomp 为镜像标签
  3. 停止、删除原容器

    1
    2
    docker stop rabbitmq
    docker rm -f rabbitmq
  4. 创建新容器

    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
  5. 测试

    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
    <!DOCTYPE HTML>
    <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
2
3
4
docker cp rabbitmq_delayed_message_exchange-3.8.0.ez rabbitmq:/plugins

docker exec -it rabbitmq
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

忘记密码

1
2
3
4
5
6
7
8
# 新增用户 
rabbitmqctl add_user test 123456

# 用户管理员角色
rabbitmqctl set_user_tags test administrator

# 用户授权
rabbitmqctl set_permissions -p / test "." "." ".*"