SQS로 메시지를 보내는데 몇 가지 방법이 있을 것 같지만,
저는 Java Spring (boot) 개발자이니 해당 스택으로 SQS에 메시지를 쏴보겠습니다 ㅎㅎ
아하 생각해보니 새 PJ을 만들어야 하네요..! 모든 코드는 github에 있습니다.
1. 의존성 설정
plugins {
id 'org.springframework.boot' version '2.3.3.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
id 'java'
}
group = 'com.lannstark'
version = '0.1.0'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation group: 'org.springframework.cloud', name: 'spring-cloud-aws-messaging', version: '2.2.3.RELEASE'
// Auto Configure 없으면 안된다..!! No bean of AmazonSQS 등과 같은 에러를 볼 수 있다.
implementation group: 'org.springframework.cloud', name: 'spring-cloud-aws-autoconfigure', version: '2.2.3.RELEASE'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
test {
useJUnitPlatform()
}
2. Controller, Service 간단하게 만들어보기
application.yml 설정
cloud:
aws:
region:
static: ap-northeast-2
stack:
auto: false
@RequiredArgsConstructor
@RestController
public class MainController {
private final SqsMessageSender messageSender;
@PostMapping("/message")
public void sendMessage(@RequestBody String message) {
messageSender.sendMessage(message);
}
}
@Service
public class SqsMessageSender {
private final QueueMessagingTemplate queueMessagingTemplate;
@Autowired
public SqsMessageSender(AmazonSQS amazonSqs) {
this.queueMessagingTemplate = new QueueMessagingTemplate((AmazonSQSAsync) amazonSqs);
}
public void sendMessage(String message) {
Message<String> newMessage = MessageBuilder.withPayload(message).build();
queueMessagingTemplate.send("sqs-study", newMessage);
}
}
spring-cloud-aws를 이용하면 QueueMessagingTemplate을 이용하여 SQS에 메시지를 보낼 수 있습니다.
SqsMessageSender가 해주는 역할은 간단합니다. 문자열을 받아서 sqs-study
라는 Queue로 전송합니다.
우선 로컬에서 실행해보면... 몇 가지 에러가 나올 수 있는데요, 에러들의 해결방법은 여기에 별도로 정리해 두었습니다.
POST MAN으로 메시지를 보내보니 성공했습니다!! 와!!
@RequestBody
문자열 에는 해당 JSON 문자열이 그대로 들어가게 되고, AWS SQS 콘솔에서 들어가 있는 메시지를 확인할 수 있습니다.
메시지 전송 및 수신을 눌러 다음 페이지로 들어간 다음,
메시지 폴링을 누르면 아래 하나의 메시지가 나옵니다.
세부 정보 보기 또는 파란색으로 되어 있는 ID를 누르면, 아래와 같이 자세한 정보를 확인할 수 있습니다.
선택 후 삭제하면 Qeue에서 제거됩니다.
깨끗~ ㅎㅎㅎ...
SqsMessageSender에 존재하는 @Autowired
가 무척이나 거슬리긴 하지만 연습이니까 넘어가도록 하겠습니다..... ㅎ...
전체 시리즈 보러가기 : lannstark.tistory.com/88
'개발 공부 기록하기 > 03. AWS & Infra' 카테고리의 다른 글
[AWS SQS 들이파기] DLQ(Dead-Letter Queue) 설정하기 (0) | 2020.09.23 |
---|---|
[AWS SQS 들이파기] SQS에서 메시지 받기 II (Java + Gradle + Spring) (1) | 2020.09.23 |
[AWS SQS 들이파기] SQS에서 메시지 받기 I (Java + Gradle + Spring) (0) | 2020.09.23 |
[AWS SQS 들이파기] SQS 만들어보기 (0) | 2020.09.23 |
AWS Access Key 발급받고 사용하기 (1) | 2020.09.17 |