简介
用Resi本身封装的方法相比于调redis-smq库,实现方式就要简单朴素很多:
- 调用redis本身的List数据结构的Lpush实现消息的进队。
- 用Redis的List数据结构的brpop方法实现消息的出队。
- 将出队消息通过邮件方法发送给指定的用户。
生动形象理解就是用redis作为一根管子将发送端和接收端连接在一起,然后通过这根管子(先进先出)进行数据传输。
email.js
const stmpid = "通过QQ邮箱官网获取的密钥"
var nodemailer = require('nodemailer');
//将获取到的消息通过邮箱发送
//开启一个 SMTP 连接池
var transport = nodemailer.createTransport({host : 'smtp.qq.com', //QQ邮箱的 smtp 服务器地址secure : true, //使用 SSL 协议secureConnection : false, //是否使用对 https 协议的安全连接port : 465, //QQ邮件服务所占用的端口auth : {user : '你的@qq.com', //开启 smtp 服务的发件人邮箱,用于发送邮件给其他人pass : stmpid //SMTP 服务授权码}
})
exports.transemail = function(message){transport.sendMail({from : '你的@qq.com', //发件人to : '你想发送的对象@qq.com', //收件人subject : 'mongodb数据更新', //标题text: message},(err,res)=>{if(err){//执行错误console.log(err) } else {console.log(res) //执行成功, 会返回响应体内容。} transport.close() // 如果没用,则关闭连接池})
}
consumer.js
const redis = require('promise-redis-client')exports.createClient = function() {return new Promise((resolve, reject) => {let client = redis.createClient()client.on('error', err => {console.log('redis 连接出错')reject(err)})client.on('ready', () => {console.log('redis ready')resolve(client)})})
}
由于是简单的邮件发送模拟,所以数据产生的模拟直接通过在命令行中执行lpush就可以了。
然后启动consumer服务以后就可以在你指定的QQ邮箱收到相关的输入信息了。