本範例在locahost的Java應用程式以AWS的SDK aws-sdk-java-v2
發送訊息到SQS queue。
範例環境:
- Java 17
- Maven
Prerequisites
參考「AWS 建立IAM管理使用者及credentials」設定存取AWS需要的IAM管理員credentials。
參考「AWS console建立SQS queue範例」建立一個名稱為DemoQueue
的SQS queue並發送一個"hello"訊息。
下載AWS SDK for Java 2.x
在專案的pom.xml
加入以下需要的AWS SDK for Java的SQS依賴。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>2.16.60</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>sqs</artifactId>
</dependency>
設定好pom.xml
在專案執行mvn install
下載依賴。
發送訊息到SQS queue
呼叫SqsClient.builder()
輸入region參數建立SqsClient
來獲取SQS queue的訊息。AWS SDK預設會讀取$HOME/.aws/credentials
的access keys來通過權限驗證。
Main
package com.abc.demo;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsClient;
import software.amazon.awssdk.services.sqs.model.GetQueueUrlRequest;
import software.amazon.awssdk.services.sqs.model.GetQueueUrlResponse;
import software.amazon.awssdk.services.sqs.model.SendMessageRequest;
import software.amazon.awssdk.services.sqs.model.SendMessageResponse;
public class Main {
public static void main(String[] arges) {
SqsClient sqsClient = SqsClient.builder()
.region(Region.AP_NORTHEAST_1)
.build();
String queueUrl = getQueueUrl(sqsClient);
String message = "hello world from java";
SendMessageResponse sendMessageResponse = sendMessageToSQS(sqsClient, queueUrl, message);
System.out.println(sendMessageResponse.messageId());
}
public static String getQueueUrl(SqsClient sqsClient) {
GetQueueUrlResponse getQueueUrlResponse =
sqsClient.getQueueUrl(
GetQueueUrlRequest.builder()
.queueName("DemoQueue")
.build());
return getQueueUrlResponse.queueUrl();
}
public static SendMessageResponse sendMessageToSQS(SqsClient sqsClient, String queueUrl, String message) {
SendMessageRequest sendMessageRequest = SendMessageRequest.builder()
.queueUrl(queueUrl)
.messageBody(message)
.build();
return sqsClient.sendMessage(sendMessageRequest);
}
}
測試
執行Java應用程式印出發送訊息的Message ID如下。
9a0141f2-8e2e-432d-82c2-294423c156a1
在AWS console SQS queue點選[Poll for message]可看到送來的訊息。
沒有留言:
張貼留言