vue3利用Stomp连接rabbitMq接收后台消息

//1、首先安装stomp
yarn add stompjs
yarn add sockjs-client
//2、引入
import Stomp from 'stompjs';
let client;
//mpData为传过来的参数。里面包含基本的用户名,密码,主机,超时时间等等
export function MqMessage(mpData) {
  client = Stomp.client(mpData.url);
  let value = null;
  var headers = {
    login: mpData.username,
    passcode: mpData.userpwd,
    //虚拟主机,默认“/”
    host: mpData.vhost,
    // 'accept-version': '1.1,1.0',
    // 'heart-beat': '100000,10000',
    // 'client-id': 'my-client-id'
  };
  //创建连接,放入连接成功和失败回调函数
  client.connect(headers, onConnected, onFailed);
  
  function onConnected(frame) {
    // console.log('Connected: ' + frame);
    //绑定交换机exchange_pushmsg是交换机的名字rk_pushmsg是绑定的路由key
    //如果不用通过交换机发则如下直接写队列名称就行
    var exchange = mpData.queue;
    //创建随机队列用上面的路由key绑定交换机,放入收到消息后的回调函数和失败的回调函数
    //是交换机把下面/queue/改为/exchange/
    client.subscribe('/queue/' + exchange, responseCallback, {
      ack: 'client',
      'x-message-ttl': mpData.args['x-message-ttl'],  //这个为我的超时时间
      durable: true,
    });
    // console.log(frame);
  }
  function onFailed(frame) {
    // console.log('Failed: ' + frame);
    if (client.connected) {
      client.disconnect(function () {
        client.connect(headers, onConnected, onFailed);
      });
    }
    else {
      client.connect(headers, onConnected, onFailed);
    }
  }
  function responseCallback(frame) {
    value = frame.body;
    // console.log('得到的消息 msg=>' + frame.body);
    // console.log(frame);
    //接收到服务器推送消息,向服务器定义的接收消息routekey路由rk_recivemsg发送确认消息
    frame.ack();
  }
  // return value;
}
// 断开连接
export function DisMqMessage() {
  try {
    if (client.connected) {
      client.disconnect();
    }
  } catch (e) {}
}

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 是一个用于构建用户界面的 JavaScript 框架,它通常用于构建单页面应用程序(SPA)。Vue.js本身并不直接与外部消息队列(RabbitMQ)进行连接和订阅消息。但是你可以使用第三方库(例如amqp.js)来连接和订阅RabbitMQ消息。 以下是一个简单的示例,演示如何在Vue.js应用程序中使用amqp.js库连接RabbitMQ并订阅消息。 1. 首先,安装amqp.js库。可以使用npm来安装它: ``` npm install amqp-ts ``` 2. 在Vue.js应用程序的某个组件中,引入amqp.js库。例如,在Vue组件的`<script>`标签中添加以下代码: ```javascript import {Connection} from 'amqp-ts'; // 创建与RabbitMQ服务器的连接 const connection = new Connection('amqp://localhost:5672'); // 创建与指定队列的通信 const queue = connection.declareQueue('myQueueName'); // 订阅消息 queue.activateConsumer((message) => { console.log('Received message:', message.getContent()); }, {noAck: true}); ``` 这个代码片段首先创建一个与RabbitMQ服务器的连接,然后声明一个要与之通信的队列,最后使用`activateConsumer`方法订阅消息。在收到消息时,我们将使用回调函数来处理消息。 3. 如果需要在Vue组件的生命周期钩子函数中使用这些逻辑,可以将上述代码放在`created`或`mounted`钩子函数中: ```javascript export default { created() { // 上述代码放在这里 } } ``` 这样,当组件创建时或挂载时,将会连接RabbitMQ并开始订阅消息。收到的消息将在控制台中打印出来(可以根据需求进行处理)。 请注意,此示例仅仅是一个概念示例,实际应用中需要根据具体情况进行适当的配置和错误处理。另外,为了在Vue.js应用程序中连接RabbitMQ,需要在运行应用程序的机器上安装并运行RabbitMQ服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值