Amazon SQS 대기열로 메시지 속성 보내기 - Amazon Simple Queue Service

Amazon SQS 대기열로 메시지 속성 보내기

메시지 속성을 사용하여 메시지에 구조화된 메타데이터(예: 타임스탬프, 지리 공간 데이터, 서명 및 식별자)를 포함할 수 있습니다. 자세한 내용은 Amazon SQS 메시지 속성 섹션을 참조하세요.

예제 코드를 실행하기 전에 AWS 자격 증명을 확인해야 합니다. 자세한 내용은 AWS SDK for Java 2.x 개발자 안내서에서 개발을 위한 AWS 자격 증명 및 리전 설정을 참조하세요.

속성 정의

메시지에 대한 속성을 정의하려면 MessageAttributeValue 데이터 유형을 사용하는 다음 코드를 추가합니다. 자세한 내용은 메시지 속성 구성 요소메시지 속성 데이터 형식(을)를 참조하세요.

AWS SDK for Java는 메시지 본문 및 메시지 속성 체크섬을 자동으로 계산하고 Amazon SQS가 반환하는 데이터와 비교합니다. 자세한 내용은 AWS SDK for Java 2.x 개발자 안내서 및 다른 프로그래밍 언어의 메시지 속성의 MD5 메시지 다이제스트 계산을 참조하세요.

String

이 예제에서는 값 String을 사용하여 Name이라는 Jane 속성을 정의합니다.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("Name", new MessageAttributeValue() .withDataType("String") .withStringValue("Jane"));
Number

이 예제에서는 값 Number을 사용하여 AccurateWeight이라는 230.000000000000000001 속성을 정의합니다.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("AccurateWeight", new MessageAttributeValue() .withDataType("Number") .withStringValue("230.000000000000000001"));
Binary

이 예제에서는 초기화되지 않은 10바이트 어레이의 값을 사용하여 Binary라는 ByteArray 속성을 정의합니다.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("ByteArray", new MessageAttributeValue() .withDataType("Binary") .withBinaryValue(ByteBuffer.wrap(new byte[10])));
String (custom)

이 예제에서는 값 String.EmployeeId을 사용하여 EmployeeId라는 사용자 지정 속성 ABC123456를 정의합니다.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("EmployeeId", new MessageAttributeValue() .withDataType("String.EmployeeId") .withStringValue("ABC123456"));
Number (custom)

이 예제에서는 값 Number.AccountId을 사용하여 AccountId라는 사용자 지정 속성 000123456를 정의합니다.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("AccountId", new MessageAttributeValue() .withDataType("Number.AccountId") .withStringValue("000123456"));
참고

기본 데이터 입력이 Number이므로 ReceiveMessage 메서드가 123456을 반환합니다.

Binary (custom)

이 예제에서는 초기화되지 않은 10바이트 어레이의 값을 사용하여 Binary.JPEG이라는 사용자 지정 속성 ApplicationIcon를 정의합니다.

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("ApplicationIcon", new MessageAttributeValue() .withDataType("Binary.JPEG") .withBinaryValue(ByteBuffer.wrap(new byte[10])));

속성을 포함하는 메시지 전송

이 예에서는 메시지를 보내기 전에 SendMessageRequest에 속성을 추가합니다.

// Send a message with an attribute. final SendMessageRequest sendMessageRequest = new SendMessageRequest(); sendMessageRequest.withMessageBody("This is my message text."); sendMessageRequest.withQueueUrl(myQueueUrl); sendMessageRequest.withMessageAttributes(messageAttributes); sqs.sendMessage(sendMessageRequest);
중요

선입선출(FIFO) 대기열로 메시지를 보내는 경우 메시지 그룹 ID를 제공한 sendMessage 메서드가 실행되는지 확인하세요.

SendMessage 대신 SendMessageBatch 메서드를 사용하는 경우 배치의 개별 메시지에 대해 메시지 속성을 지정해야 합니다.