網頁

2022/3/30

Java 本機發送訊息到SQS queue

本範例在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);

    }

}

github


測試

執行Java應用程式印出發送訊息的Message ID如下。

9a0141f2-8e2e-432d-82c2-294423c156a1

在AWS console SQS queue點選[Poll for message]可看到送來的訊息。






沒有留言:

張貼留言