AWS
Simple Queue Service 소개 및 사용법(3/3)
Beekei
2021. 10. 26. 15:39
반응형
앞서 기본적으로 SQS에 메시지를 보내고 받는 예제를 구현해보았다.
이번에는 메시지를 객체로 보내고 받는 예제를 구현해보겠다.
앞서 만들었던 Controller와 Sender, Listener를 수정해서 구현해볼것이다.
이메일을 보내는 로직이라고 했을때
SendMailDTO
Getter, NoArgsConstructor, AllArgsConstructor를 선언해야 하지 않으면 오류가 발생한다.
@ToString
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class SendMailDTO {
private String receiveMail;
private String subject;
private String contents;
}
SqsMessageSender
@Service
public class SqsMessageSender {
private final QueueMessagingTemplate queueMessagingTemplate;
@Autowired
public SqsMessageSender(AmazonSQS amazonSQS) {
this.queueMessagingTemplate = new QueueMessagingTemplate((AmazonSQSAsync) amazonSQS);
}
public void sendMail(SendMailDTO sendMailDTO) {
queueMessagingTemplate.convertAndSend("testQueue", sendMailDTO);
}
}
SqsMessageListener
Payload를 보낸 메시지와 동일한 객체로 받는다
@Slf4j
@Component
public class SqsMessageListener {
@SqsListener(value = "testQueue", deletionPolicy = SqsMessageDeletionPolicy.ON_SUCCESS)
public void listen(@Payload SendMailDTO sendMailDTO,
@Headers Map<String, String> headers) {
log.info("{}", sendMailDTO);
log.info("{}", headers);
}
}
SqsController
@RestController
@RequiredArgsConstructor
public class SqsController {
private final SqsMessageSender sqsMessageSender;
@PostMapping(value = "sqs/send-mail")
public String sendMail(@RequestBody SendMailDTO sendMailDTO) {
sqsMessageSender.sendMail(sendMailDTO);
return "Success";
}
}
Send Test
객체가 정상적으로 보내지고 받아지는것을 확인할 수 있다.
전체 코드는 아래 GitHub에서 확인하실 수 있습니다.
반응형