首页 > 其他分享 >Vue前端实现接收rabbitMQ及时消息 原

Vue前端实现接收rabbitMQ及时消息 原

时间:2024-06-04 22:34:27浏览次数:13  
标签:Vue console log exchange frame rabbitMQ client 前端

https://blog.csdn.net/dawnStart/article/details/110479833


打开APP

Vue前端实现接收rabbitMQ及时消息 原创

2020-12-02 14:03:11
阅读量
1.4w

AI必读

dawnStart 

码龄4年

关注
Vue前端实现实时接收rabbitMQ及时消息,看了别人写的不太详细
1.rabbitMQ安装Stom插件
2.Vue前端安装Stom
3.创建一个测试交换机
4.编写接受rabbitMQ信息的代码
1.vue项目
2.普通web项目
5.给rabbitMq发消息测试
1.rabbitMQ安装Stom插件
进入rabbitMQ的安装目录,如果是docker容器的话,进入tabbitMQ容器
执行下面的两条命令

rabbitmq-plugins enable rabbitmq_web_stomp
rabbitmq-plugins enable rabbitmq_web_stomp_examples
1
2
1
2
查看下有没有安装成功
如果是用docker容器的话记的开放15674端口
在这里插入图片描述

2.Vue前端安装Stom
//普通项目导入js文件
<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>
//vue项目的话添加依赖就好
npm install stompjs
1
2
3
4
5
1
2
3
4
5
3.创建一个测试交换机
直接在rabbitMQ控制台界面添加一个交换机就好,type用direct类型
在这里插入图片描述

4.编写接受rabbitMQ信息的代码
1.vue项目
import Stomp from 'stompjs'

export default {
    name: 'messageNotice',
    data () {
        return {
            client: null
        }
    },
    created() {
    //初始化连接
        this.connect();
    },
    methods: {
    //webSocket连接成功后回调函数
        onConnected(frame) {
            console.log("Connected: " + frame);
            //绑定交换机exchange_pushmsg是交换机的名字rk_pushmsg是绑定的路由key
            var exchange = "/exchange/exchange_pushmsg/rk_pushmsg";
            //创建随机队列用上面的路由key绑定交换机,放入收到消息后的回调函数和失败的回调函数
            this.client.subscribe(exchange, this.responseCallback, this.onFailed);
            console.log(frame)
        },
        onFailed(frame) {
            console.log("Failed: " + frame);
        },
        responseCallback(frame) {
            console.log("得到的消息 msg=>" + frame.body);
            console.log(frame)
            //接收到服务器推送消息,向服务器定义的接收消息routekey路由rk_recivemsg发送确认消息
            this.client.send("/exchange/exchange_pushmsg/rk_recivemsg", {"content-type":"text/plain"}, frame.body);
        },
        connect() {
        //这里填你rabbitMQ的连接ip地址直接替换localhost:15674就好其它的不用改
            this.client= Stomp.client("ws://localhost:15674/ws")
            //填写你rabbitMQ登录的用户名和密码
            var headers = {
                "login": "admin",
                "passcode": "admin",
                //虚拟主机,默认“/”
                "host": "/"
            };
            //创建连接,放入连接成功和失败回调函数
            this.client.connect(headers, this.onConnected, this.onFailed);
        },
  }


2.普通web项目
<!DOCTYPE HTML>
<html>
<head>
    <title>My WebSocket</title>
</head>
 
<body>
Welcome<br/>
<input id="text" type="text" />
<div id="message">
</div>
</body>
<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')
}
 
// 初始化 ws 对象
 
var ws = new WebSocket('ws://192.168.2.106:15674/ws');
 
// 获得Stomp client对象
var client = Stomp.over(ws);
 
 
// 定义连接成功回调函数
var on_connect = function(x) {
    //同上
    client.subscribe("/exchange/exchange_pushmsg/queue", function(data) {
        var msg = data.body;
        alert("收到数据:" + msg);
    });
};
 
// 定义错误时回调函数
var on_error =  function() {
    console.log('error');
};
 
// 连接RabbitMQ,输入用户名和密码,连接成功和失败函数
client.connect('guest', 'guest', on_connect, on_error, '/');
console.log(">>>连接上http://localhost:15674");
</script>
</html>
出现下面的信息说明创建连接成功
在这里插入图片描述

5.给rabbitMq发消息测试
可以通过rabbitMQ控制面板或者后端代码测试发消息给交换机,前端就能立刻受到消息了
在这里插入图片描述

或者

rabbitTemplate.convertAndSend("exchange_pushmsg","rk_recivemsg","这是一条消息")

 

标签:Vue,console,log,exchange,frame,rabbitMQ,client,前端
From: https://www.cnblogs.com/it-wwp/p/18231924

相关文章

  • Vue3-shallowRef与shallowReactive
    shallowRef作用:创建一个响应式数据,但只对顶层属性进行响应式处理。用法:letmyVar=shallowRef(initialValue);特点:只跟踪引用值的变化,不关心值内部的属性变化。shallowReactive作用:创建一个浅层响应式对象,只会使对象的最顶层属性变成响应式的,对象内部的嵌套属......
  • Vue3-Pinia状态管理器
    Pinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态。如果你熟悉组合式API的话,你可能会认为可以通过一行简单的 exportconststate=reactive({}) 来共享一个全局状态。对于单页应用来说确实可以,但如果应用在服务器端渲染,这可能会使你的应用暴露出一些安全漏洞......
  • vue后台用户路由权限和按钮权限实现原理
    概论主要是通过一个唯一标识name或者id来过滤判断用户所处的角色是否有路由的权限或者按钮的权限一般路由都有一个一个name可以作为唯一标识一般按钮的话,可以自定义一个name作为标识业务逻辑后台通过选中路由或者按钮给角色,代表这个角色有数组中name[]的权限,用户或者部门再......
  • vue-router 源码分析——2. router-link 组件是如何实现导航的
    这是对vue-router3版本的源码分析。本次分析会按以下方法进行:按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时的回答都非常有帮助。在围绕某个功能展开讲解时,所......
  • 基于SpringBoot+Vue的足球社区管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于SpringBoot+Vue的医院住院管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 前端引入,Web服务器的本质,HTTP协议,HTML基础,常用标签介绍
    Ⅰ前端引入【一】前端/后端【1】什么是前端任何与用户直接打交道的操作界面都可以称之为前端前端可以是浏览器的界面、也可以是客户端的界面、还可以是手机的界面...比如电脑界面、手机界面、平板界面【2】什么是后端不直接与用户打交道的用于执行真正业务逻辑的代......
  • Vue3单文件组件实现省市区县三级联动
    Provinces.vue<template>  <divclass="select-container">    <selectv-model="selectedProvince"@change="handleProvinceChange">      <optionvalue=""disabled>请选择省份</opti......
  • webapi 接收前端上传的文件
    usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Mvc;usingSystem.IO;usingSystem.IO.Compression;namespaceWebApplication1.Controllers{[Route("api/[controller]/[action]")][ApiController]publicclassValuesControlle......
  • 基于springboot-vue的毕业论文管理系统(11728)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示二、资料项目演示视频介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......