当前位置: 首页> 游戏> 手游 > 宁波自己建网站_郑州电力高等专科学校怎么样_软考培训机构排名_广告公司推广

宁波自己建网站_郑州电力高等专科学校怎么样_软考培训机构排名_广告公司推广

时间:2025/7/12 6:26:59来源:https://blog.csdn.net/sealaugh1980/article/details/144310622 浏览次数:0次
宁波自己建网站_郑州电力高等专科学校怎么样_软考培训机构排名_广告公司推广

aws(学习笔记第十七课)

  • SQS Amazon Simple Queue Service服务

学习内容:

  • 使用SQS Amazon Simple Queue Service服务
  • 整体代码(nodejs的通常工程)
  • 代码动作

1. 使用SQS Amazon Simple Queue Service服务

  1. 利用应用程序来学习SQS
    在这里插入图片描述
    • 创建S3
      $ aws s3 mb s3://urs2png-20241211-finlay
      $ aws s3 website s3://urs2png-20241211-finlay --index-document index.html --error-document error.html
      
    • 创建SQS
      aws sqs create-queue --queue-name url2png
      
      在这里插入图片描述
  2. 整体代码(nodejs的通常工程)
    • config.json
      QueueUrl替换成上面创建的SQS
      Bucket替换成上面创建的S3 bucket的名字
      {"QueueUrl": "https://sqs.ap-northeast-1.amazonaws.com/081353481087/url2png","Bucket": "urs2png-20241211-finlay"
      }
      
    • package.json 定义依赖关系
      {"dependencies": {"aws-sdk": "2.1.18","node-uuid": "1.4.3","node-webshot": "1.0.4","phantomjs-prebuilt": "2.1.16"},"private": true
      }
      
    • index.js (生产者 producer)
      it send url of png to sqs on aws.
      var AWS = require('aws-sdk');
      var uuid = require('node-uuid');
      var config = require('./config.json');
      var sqs = new AWS.SQS({"region": "ap-northeast-1"
      });if (process.argv.length !== 3) {console.log('URL missing');process.exit(1);
      }var id = uuid.v4();
      var body = {"id": id,"url": process.argv[2]
      };sqs.sendMessage({"MessageBody": JSON.stringify(body),"QueueUrl": config.QueueUrl
      }, function(err) {if (err) {console.log('error', err);} else {console.log('PNG will be soon available at http://' + config.Bucket + '.s3-website-us-east-1.amazonaws.com/' + id + '.png');}
      });
      
    • worker.js 消费者(consumer
      receive message of sqs on aws every 1 second.
      var fs = require('fs');
      var AWS = require('aws-sdk');
      var webshot = require('node-webshot');
      var config = require('./config.json');
      var sqs = new AWS.SQS({"region": "us-east-1"
      });
      var s3 = new AWS.S3({"region": "us-east-1"
      });function acknowledge(message, cb) {var params = {"QueueUrl": config.QueueUrl,"ReceiptHandle": message.ReceiptHandle};sqs.deleteMessage(params, cb);
      }function process(message, cb) {var body = JSON.parse(message.Body);var file = body.id + '.png';webshot(body.url, file, function(err) {if (err) {cb(err);} else {fs.readFile(file, function(err, buf) {if (err) {cb(err);} else {var params = {"Bucket": config.Bucket,"Key": file,"ACL": "public-read","ContentType": "image/png","Body": buf};s3.putObject(params, function(err) {if (err) {cb(err);} else {fs.unlink(file, cb);}});}});}});
      }function receive(cb) {var params = {"QueueUrl": config.QueueUrl,"MaxNumberOfMessages": 1,"VisibilityTimeout": 120,"WaitTimeSeconds": 10};sqs.receiveMessage(params, function(err, data) {if (err) {cb(err);} else {if (data.Messages === undefined) {cb(null, null);} else {cb(null, data.Messages[0]);}}});
      }function run() {receive(function(err, message) {if (err) {throw err;} else {if (message === null) {console.log('nothing to do');setTimeout(run, 1000);} else {console.log('process');process(message, function(err) {if (err) {throw err;} else {acknowledge(message, function(err) {if (err) {throw err;} else {console.log('done');setTimeout(run, 1000);}});}});}}});
      }run();
      

3. 代码动作

  1. 安装nodejs
    由于一些包的原因,这个nodejs程序只能运行在nodejs@v11.15.0,因此事先下载。
    nodejsv11.15.0
    在这里插入图片描述
  2. 执行npm install
    npm install
    
  3. 准备图片
    示例图片URL
  4. 运行程序
    • 首先运行work.js监视aws sqs
      node work.js
      
      在这里插入图片描述
    • 之后运行index.js
      node index.js "https://pics1.baidu.com/feed/f9dcd100baa1cd11d2771efce7c9a6f8c1ce2d0c.jpeg@f_auto?token=e630acf36ce316be5abcb2652d6971b3&s=110AA3F04A32B6C842AFE716030040DF"
      
      在这里插入图片描述
      可以看到work.js这边显示done,表明已经接收到urlmessage,处理成文件之后传送到了S3 bucket
    • 最后检查S3 bucket
      在这里插入图片描述
关键字:宁波自己建网站_郑州电力高等专科学校怎么样_软考培训机构排名_广告公司推广

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: