日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java queue使用_使用Java使用Amazon Simple Queue Service

發布時間:2023/12/3 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java queue使用_使用Java使用Amazon Simple Queue Service 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java queue使用

Amazon Simple Queue Service或SQS是Amazon Webservice堆棧提供的高度可擴展的托管消息隊列。 Amazon SQS可用于完全解耦系統內不同組件的操作,這些組件否則將交換數據以執行獨立的任務。 Amazon SQS還可以幫助我們保存在應用程序關閉或組件之一不可用時丟失的數據。

Amazon SQS功能(直接從亞馬遜網站復制)

  • 冗余基礎架構 —保證至少一次傳遞消息,對消息的高度并發訪問以及發送和檢索消息的高可用性
  • 多位作者和讀者-系統的多個部分可以同時發送或接收消息。 SQS在處理過程中鎖定消息,使系統的其他部分無法同時處理消息。
  • 每個隊列的可配置設置 -您的所有隊列不必完全相同。 例如,一個隊列可以針對需要比其他隊列更長的處理時間的消息進行優化。
  • 可變的消息大小 -您的消息最大為65536字節(64 KiB)。 對于更大的消息,您可以使用Amazon Simple Storage Service(Amazon S3)或Amazon SimpleDB存儲消息的內容,并使用Amazon SQS持有指向Amazon S3或Amazon SDB對象的指針。 或者,您可以將較大的消息拆分為較小的消息。
  • 訪問控制 -您可以控制誰可以向隊列發送消息以及誰可以從隊列接收消息
  • 延遲隊列 -延遲隊列是用戶在隊列上設置默認延遲的延遲隊列,以使所有排隊的消息的發送都將延遲該時間段。 您可以使用CreateQueue創建隊列時設置延遲值,也可以使用SetQueueAttributes更新該值。 如果更新該值,則新值僅影響更新后排隊的消息。
  • 有了上述知識,讓我們嘗試使用SQS創建簡單的照片處理服務。

    本教程的問題定義

    我們將創建一個包含以下組件的簡單照片處理應用程序。

  • 照片上傳器服務 –這是一項網絡服務,允許用戶將照片上傳到系統。 照片上傳后,它們將存儲在臨時存儲中。 為簡單起見,我們假設用戶已經上傳了照片并將其存儲在預定義的位置。
  • AWSSimpleQueueServiceUtil –這是一個實用程序類,用于包裝Amazon SQS客戶端并在SQS隊列上執行基本的CRUD操作。
  • PhotoProcessingManager –管理整個節目。 它將調用AWSSimpleQueueServiceUtil將消息發送/接收到SQS,并調用PhotoProcessor來處理照片,最后從隊列中刪除消息。 通常,我們應該打算讓此類充當SQS的偵聽器,但為簡單起見,我們將僅使用輪詢機制從SQS中提取消息。
  • PhotoProcessor –通過PhotoProcessingManager從SQS獲取照片消息并生成縮略圖。
  • 在開始之前,如果您通過以下鏈接觀看視頻,那就太好了: http : //docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSGettingStartedGuide/Welcome.html

    入門步驟

  • 創建一個亞馬遜帳戶。 您將需要一張信用卡
  • 登錄到控制臺console.aws.amazon.com 。
  • 在控制臺儀表板上搜索SQS,然后單擊它。 它會將您帶到您的SQS家。
  • 創建一個新的SQS隊列,并將其命名為PhotoQueue。 將其余設置保留為默認設置。 我們還可以動態創建和刪除SQS隊列,但是在本教程中,我有一個預先創建的隊列,該隊列將在我的代碼中使用。
  • 現在我們有了一個隊列,現在我們將在我們最喜歡的Java編輯器中創建一個簡單的Java項目,并了解如何利用此隊列。
  • 完成后,您需要下載安全憑證。 為此,請轉到“我的帳戶” /“安全憑證”。 我們追求的是訪問憑據。 您將看到有3種類型的訪問憑據,其中一種是“訪問密鑰”。 我們需要它來訪問和使用剛剛創建的PhotoQueue。 我們將創建一組新的訪問密鑰,并將訪問密鑰和秘密密鑰存儲在安全的位置。
  • 現在,從此處下載適用于Java的SDK。 http://aws.amazon.com/sdkforjava 。 在sdk的lib文件夾中,將aws-java-sdk-1.3.33.jar復制到您的項目類路徑。

    Maven用戶可以在其POM中添加以下依賴項

    <dependency><groupId>com.amazonaws</groupId><artifactId>aws-java-sdk</artifactId><version>1.3.33</version> </dependency>

    創建一個名為“ AwsCredentials.properties”的文件,將其存儲在您的項目中。 該文件將包含以下屬性

    accessKey = secretKey =

    這些屬性的值是您在步驟6中生成的訪問密鑰。

  • 對于照片處理,我正在使用imgscalr 。 它是Java中的一種輕量級且很棒的照片處理庫,用于執行諸如調整大小,旋轉,裁剪等簡單任務。您可以從http://www.thebuzzmedia.com/software/imgscalr-java-image-scaling-library下載該jar /#download 。 Maven用戶可以將以下內容添加到其依賴項列表中。 <dependency><groupId>org.imgscalr</groupId><artifactId>imgscalr-lib</artifactId><version>4.2</version><type>jar</type><scope>compile</scope></dependency>
  • 現在,我們準備搖擺不定,并通過一些代碼使我們的手變得骯臟。

    AWSSimpleQueueServiceUtil.java

    package com.aranin.adconnect.util.aws;import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClient; import com.amazonaws.services.sqs.model.*;import java.io.FileInputStream; import java.util.List; import java.util.Properties;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 3/19/13* Time: 10:44 AM* To change this template use File | Settings | File Templates.*/ public class AWSSimpleQueueServiceUtil {private BasicAWSCredentials credentials;private AmazonSQS sqs;private String simpleQueue = "PhotoQueue";private static volatile AWSSimpleQueueServiceUtil awssqsUtil = new AWSSimpleQueueServiceUtil();/*** instantiates a AmazonSQSClient http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/sqs/AmazonSQSClient.html* Currently using BasicAWSCredentials to pass on the credentials.* For SQS you need to set your regions endpoint for sqs.*/private AWSSimpleQueueServiceUtil(){try{Properties properties = new Properties();properties.load(new FileInputStream("D:/samayik/adkonnection/src/main/resources/AwsCredentials.properties"));this.credentials = new BasicAWSCredentials(properties.getProperty("accessKey"),properties.getProperty("secretKey"));this.simpleQueue = "PhotoQueue";this.sqs = new AmazonSQSClient(this.credentials);/*** My queue is in singapore region which has following endpoint for sqs* https://sqs.ap-southeast-1.amazonaws.com* you can find your endpoints here* http://docs.aws.amazon.com/general/latest/gr/rande.html** Overrides the default endpoint for this client ("sqs.us-east-1.amazonaws.com")*/this.sqs.setEndpoint("https://sqs.ap-southeast-1.amazonaws.com");/**You can use this in your web app where AwsCredentials.properties is stored in web-inf/classes*///AmazonSQS sqs = new AmazonSQSClient(new ClasspathPropertiesFileCredentialsProvider());}catch(Exception e){System.out.println("exception while creating awss3client : " + e);}}public static AWSSimpleQueueServiceUtil getInstance(){return awssqsUtil;}public AmazonSQS getAWSSQSClient(){return awssqsUtil.sqs;}public String getQueueName(){return awssqsUtil.simpleQueue;}/*** Creates a queue in your region and returns the url of the queue* @param queueName* @return*/public String createQueue(String queueName){CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName);String queueUrl = this.sqs.createQueue(createQueueRequest).getQueueUrl();return queueUrl;}/*** returns the queueurl for for sqs queue if you pass in a name* @param queueName* @return*/public String getQueueUrl(String queueName){GetQueueUrlRequest getQueueUrlRequest = new GetQueueUrlRequest(queueName);return this.sqs.getQueueUrl(getQueueUrlRequest).getQueueUrl();}/*** lists all your queue.* @return*/public ListQueuesResult listQueues(){return this.sqs.listQueues();}/*** send a single message to your sqs queue* @param queueUrl* @param message*/public void sendMessageToQueue(String queueUrl, String message){SendMessageResult messageResult = this.sqs.sendMessage(new SendMessageRequest(queueUrl, message));System.out.println(messageResult.toString());}/*** gets messages from your queue* @param queueUrl* @return*/public List<Message> getMessagesFromQueue(String queueUrl){ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();return messages;}/*** deletes a single message from your queue.* @param queueUrl* @param message*/public void deleteMessageFromQueue(String queueUrl, Message message){String messageRecieptHandle = message.getReceiptHandle();System.out.println("message deleted : " + message.getBody() + "." + message.getReceiptHandle());sqs.deleteMessage(new DeleteMessageRequest(queueUrl, messageRecieptHandle));}public static void main(String[] args){}}

    PhotoProcessor.java

    package com.aranin.adconnect.util.aws;import org.imgscalr.Scalr;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 3/19/13* Time: 12:32 PM* To change this template use File | Settings | File Templates.*/ public class PhotoProcessor {public static void generateImage(String imagePath, String origName, String targetName, int scalabity){String origImage = null;String targetImage = null;File origFile = null;BufferedImage buffImg = null;File targetFile = null;try{origImage = imagePath + "/" + origName;targetImage = imagePath + "/" + targetName;origFile = new File(origImage);buffImg = ImageIO.read(origFile);buffImg = Scalr.resize(buffImg, Scalr.Method.SPEED, scalabity);targetFile = new File(targetImage);ImageIO.write(buffImg, "jpeg", targetFile);}catch (Exception e){System.out.println("Exception in processing image : " + e);}finally {buffImg = null;}} }

    PhotoFile.java

    package com.aranin.adconnect.util.aws;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 3/19/13* Time: 12:29 PM* To change this template use File | Settings | File Templates.*/ public class PhotoFile {private String origName;private String targetName;public String imagePath;public String getOrigName() {return origName;}public void setOrigName(String origName) {this.origName = origName;}public String getTargetName() {return targetName;}public void setTargetName(String targetName) {this.targetName = targetName;}public String getImagePath() {return imagePath;}public void setImagePath(String imagePath) {this.imagePath = imagePath;}public String toString(){return origName + "," + targetName + "," + imagePath;} }

    SQSPhotoManager.java

    package com.aranin.adconnect.util.aws;import com.amazonaws.services.sqs.model.Message;import java.util.List; import java.util.StringTokenizer;/*** Created by IntelliJ IDEA.* User: Niraj Singh* Date: 3/20/13* Time: 11:38 AM* To change this template use File | Settings | File Templates.*/ public class SQSPhotoManager implements Runnable{private String queueUrl;public static void main(String[] args){AWSSimpleQueueServiceUtil awssqsUtil = AWSSimpleQueueServiceUtil.getInstance();/*** 1. get the url for your photo queue*/String queueUrl = awssqsUtil.getQueueUrl(awssqsUtil.getQueueName());System.out.println("queueUrl : " + queueUrl);/*** 2. Add a photo to the queue to be processed*/PhotoFile photo = new PhotoFile();photo.setImagePath("C:/Users/Public/Pictures/Sample Pictures");photo.setOrigName("Tree.jpg");photo.setTargetName("Tree_thumb.jpg");/*** 3. set the photofile in queue for processing*/awssqsUtil.sendMessageToQueue(queueUrl, photo.toString());/*** get the messages from queue*/Thread managerthread = new Thread(new SQSPhotoManager(queueUrl),"T2");managerthread.start();}public SQSPhotoManager(String queueUrl){this.queueUrl = queueUrl;}@Overridepublic void run() {AWSSimpleQueueServiceUtil awssqsUtil = AWSSimpleQueueServiceUtil.getInstance();boolean flag = true;while(flag){List<Message> messages = awssqsUtil.getMessagesFromQueue(this.queueUrl);if(messages == null || messages.size() == 0){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.}}else{flag = false;for (Message message : messages) {String messagePhoto = message.getBody();System.out.println("photo to be processed : " + messagePhoto);StringTokenizer photoTokenizer = new StringTokenizer(messagePhoto,",");String source = null;String target = null;String path = null;source = photoTokenizer.nextToken();target = photoTokenizer.nextToken();path = photoTokenizer.nextToken();System.out.println("source : " + source);System.out.println("target : " + target);System.out.println("path : " + path);/*** generate thumbmail within 150*150 container*/PhotoProcessor.generateImage(path, source, target, 150);}/*** finally delete the message*/for (Message message : messages) {awssqsUtil.deleteMessageFromQueue(this.queueUrl, message);}}}} }

    這將構成使用SQS的PhotoProcessor應用程序的核心。 此代碼有一個明顯的缺點。 它使用線程對SQS進行輪詢,如果您可以在代碼中創建一個偵聽器來訂閱您的隊列并在收到新消息時采取必要的措施,那將是很好的選擇。 這確實是我下一篇文章的主題。 然后,隨時向我提問,我們可以共同找到答案。

    參考: Weblog4j博客上的JCG合作伙伴 Niraj Singh 使用Java使用Amazon Simple Queue Service 。

    翻譯自: https://www.javacodegeeks.com/2013/06/working-with-amazon-simple-queue-service-using-java.html

    java queue使用

    總結

    以上是生活随笔為你收集整理的java queue使用_使用Java使用Amazon Simple Queue Service的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 在线观看日韩精品 | 偷拍精品一区二区三区 | 不卡av在线免费观看 | 玖玖综合网 | 一级黄色片毛片 | 精品一区二区三区无码按摩 | 久草视频首页 | 成人一级影片 | 国产欧美日韩激情 | 成 年 人 黄 色 大 片大 全 | 美女搞黄视频网站 | 天堂在线视频 | 五月婷婷综合久久 | 国产精品成人3p一区二区三区 | 中文字幕国产在线 | 日韩3区| 色婷婷成人网 | 色偷偷噜噜噜亚洲男人 | 日本一区二区在线播放 | 激情五月开心婷婷 | 国精产品一区一区三区在线 | 久久久久久99精品久久久 | 天天撸在线视频 | 色伊人网 | 亚洲人天堂 | 欧美性潮喷xxxxx免费视频看 | 亚洲国产精品午夜久久久 | 亚洲三区在线观看无套内射 | aa一级黄色片 | 91久久精品国产91久久性色tv | 中文字幕一区久久 | 蜜桃91丨九色丨蝌蚪91桃色 | 亚洲日本一区二区 | 抱着老师的嫩臀猛然挺进视频 | 国内自拍2020 | 秋霞午夜 | 欧洲高潮三级做爰 | 久久国 | 国产无套免费网站69 | 妖精视频一区二区三区 | 樱花动漫无圣光 | 国产精品入口麻豆九色 | 琪琪成人 | 国产中文字幕精品 | 中文字幕欧美人妻精品 | 熟妇人妻系列aⅴ无码专区友真希 | 调教91| 国产精品久久久久毛片 | 黄色无遮挡 | 少妇媚药按摩中文字幕 | 成人久久免费 | 久久伊人五月天 | 亚洲综合情 | 久久亚洲一区二区三区四区五区 | 欧美日韩在线二区 | 亚洲综合不卡 | 国产日本在线 | 影音先锋每日资源 | 日韩视频中文字幕 | 在线免费福利视频 | 色 综合 欧美 亚洲 国产 | 久久噜噜噜精品国产亚洲综合 | 超碰在线人人草 | 91国偷自产一区二区三区女王 | 国产免费激情视频 | 色婷婷伊人 | 国产古装艳史毛片hd | 色婷婷导航 | 久久麻豆av| 国产女人18毛片水18精 | 天天燥日日燥 | 在线观看自拍 | 日日夜夜狠狠操 | 中文字幕在线观看播放 | 天堂中文字幕 | 俺也去五月婷婷 | 日p视频在线观看 | 福利视频不卡 | 午夜影院免费视频 | 99热在线这里只有精品 | 亚洲天堂网一区 | 国产日批视频在线观看 | 久久伊人超碰 | 亚洲成人福利视频 | 久久蜜桃av一区二区天堂 | 欧洲午夜精品 | www.jizzjizz| 秋霞欧美一区二区三区视频免费 | 日韩一区二区三区四区五区 | 农村妇女av | 国产毛片一区二区 | 久久精品国产免费 | 在线天堂www在线国语对白 | 成人日批视频 | 一级黄色影院 | 在线黄色观看 | 国产毛片在线看 | 特大黑人娇小亚洲女mp4 | av在线黄 |