如何使用NODEJS+REDIS开发一个消息队列

JavaScript016

如何使用NODEJS+REDIS开发一个消息队列,第1张

如何使用NODEJS+REDIS开发一个消息队列

MQ全称为Message Queue, 消息队列(MQ)是一种应用程

序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们>。消

息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过

队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。其中较为成熟的MQ产品有IBM WEBSPHERE MQ。

var ManagedClientStatus = {

  historyMessage: [],

  curMessage: null

}

ManagedClientStatus.addMessage = function (clientObj, statusCode) {

  var curMessage = {

    client: clientObj,

    statusCode: statusCode,

    createAt: new Date()

}

  if (ManagedClientStatus.curMessage === null) {

    ManagedClientStatus.curMessage = curMessage

  } else {

    ManagedClientStatus.historyMessage.push(curMessage)

    setTimerPush()

}

}

var setTimerPush = function () {

  var setTimer1 = setInterval(function () {

    if (ManagedClientStatus.curMessage === null) {

      if (ManagedClientStatus.historyMessage.length >0) {

        ManagedClientStatus.curMessage = ManagedClientStatus.historyMessage[0]

        ManagedClientStatus.historyMessage.splice(0,1)

      } else {

        clearInterval(setTimer1)

}

}

  }, 500)

export default ManagedClientStatus

   (这个模块在vue中使用)

created: function(){

//vue中深度检测变量

watch: {

  curClientMessage: {

    handler(newName, oldName) {

      console.log('obj.a changed')

    },

    deep: true,

   immediate:true

  }

}

//js本身的检测对象内部变量的变化

var the = this

Object.defineProperty(ManagedClientStatus, 'curMessage', {

  get: function () {

    return the.curClientMessage

  },

  set: function (value) {

    the.curClientMessage = value

  }

})

将this.curClientMessage 的值输出到消息展示模块