【后端开发实习】用Redis实现消息队列邮件发送

简介

用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邮箱收到相关的输入信息了。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值