জাভা ক্লায়েন্ট অ্যাপ্লিকেশন ব্যবহার করে আমি বার্তাগুলির জন্য একটি এসকিউএস সারিতে অনুসন্ধান করছি। পরীক্ষার জন্য কাতারে সেটআপ হিসাবে 12,000 বার্তা রয়েছে। আমি ওপসজেডিকে ব্যবহার করছি আউস-জাভা-এসডিকে সর্বশেষ (সফটওয়্যার.আমাজোন.ওয়াসডকে ২.১০.২২) পম.এক্সএমএল আরও নীচে দেখানো হয়েছে।
আমি যে বিষয়টি দেখছি তা হ'ল সর্বোচ্চ সংখ্যা (10) সেট করা সত্ত্বেও আমি কেবল 3 পাই I আমি বুঝতে পারি যে এটি বার্তাগুলির সংখ্যার সর্বাধিক গ্যারান্টি নয় তবে প্রত্যাবর্তিত বার্তাগুলির সংখ্যার কোনও হার নেই। এটি সর্বদা 3।
এডাব্লুএস ডকুমেন্টেশন: ম্যাক্সনম্বার অফফেস ম্যাসেজগুলি সর্বাধিক সংখ্যক প্রত্যাবর্তনের জন্য। অ্যামাজন এসকিউএস কখনই এই মানটির চেয়ে বেশি বার্তা দেয় না (তবে কম বার্তা ফিরে আসতে পারে)। বৈধ মান: 1 থেকে 10 ডিফল্ট: 1. প্রকার: পূর্ণসংখ্যার প্রয়োজনীয়: না
সংক্ষিপ্ত পোলিং ব্যবহার করে বার্তা গ্রহণ করা
আপনি যখন সংক্ষিপ্ত পোলিং ব্যবহার করে একটি সারি থেকে বার্তা গ্রহণ করেন, তখন অ্যামাজন এসকিউএস তার সার্ভারের একটি উপসেট (ভারী এলোমেলো বিতরণের উপর ভিত্তি করে) নমুনা দেয় এবং কেবলমাত্র সেই সার্ভারগুলি থেকে বার্তা ফেরত দেয়। সুতরাং, একটি নির্দিষ্ট রিসিভমেসেজ অনুরোধ আপনার সমস্ত বার্তা ফিরে না পারে not তবে আপনার কাতারে যদি আপনার 1000 টিরও কম বার্তা থাকে তবে পরবর্তী অনুরোধটি আপনার বার্তাগুলি ফিরিয়ে দেবে। আপনি যদি আপনার সারি থেকে গ্রাস করতে থাকেন তবে অ্যামাজন এসকিউএস এর সমস্ত সার্ভারের নমুনা দেয় এবং আপনি আপনার সমস্ত বার্তা গ্রহণ করেন।
সুতরাং আমরা দু'টি ক্লায়েন্টকে একই ফলাফল সহ পুরানো আড্ডার এসডিকে এবং নতুনতর দুটি ব্যবহার করে পরীক্ষা করেছি tested সর্বদা কেবল 3 টি বার্তা ফিরে আসে।
মজার বিষয় হল যদি বাহ্যিকভাবে অ্যাপ্লিকেশনটি চালানোর পরিবর্তে (আমার শক্তিশালী ডেস্কটপে) আপনি এডাব্লুএস ল্যাম্বডা হিসাবে চালনা করেন তবে আপনি 10 বার্তা পাবেন। এই ল্যাম্বডা পরীক্ষাটি সহকর্মীর দ্বারা জাভাস্ক্রিপ্ট ব্যবহার করে করা হয়েছিল।
সুতরাং প্রশ্নটি এখনও থেকে যায় যে আমরা কেন কেবল অনুরোধ অনুযায়ী 3 বার্তা পাই এবং আপাতদৃষ্টিতে ল্যাম্বডায় আপনি 10 টি পেতে পারেন।
প্রতি অনুরোধের জন্য ব্যয় দেওয়া হয়েছে তা হ'ল অ্যামাজন লাভের ভিত্তিতে ওয়েট এলোমেলো বিতরণ =))
এসকিউএস পরীক্ষার পদ্ধতি:
public void SQStart()
{
AwsBasicCredentials awsCreds = AwsBasicCredentials.create("accessKeyID", "secretKeyID");
AwsCredentialsProvider creds = StaticCredentialsProvider.create(awsCreds);
SqsClient sqs = SqsClient.builder().credentialsProvider(creds).region(Region.EU_WEST_1).build();
GetQueueUrlRequest getQueueRequest = GetQueueUrlRequest.builder()
.queueName(QUEUE_NAME)
.build();
String queueUrl = sqs.getQueueUrl(getQueueRequest).queueUrl();
for (int x =1; x < 100; x++) {
ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder()
.queueUrl(queueUrl)
.maxNumberOfMessages(10)
.build();
List<Message> messages = sqs.receiveMessage(receiveMessageRequest).messages();
if (messages.size() > 3 ) {
System.out.println("YEY More than 3 Messages: "+ messages.size());
}
}
}
POM.XML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>SQSTest</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>2.10.62</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>sqs</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.10</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.720</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.1</version>
</dependency>
</dependencies>
</project>