반응형
# 메인
func main() {
megCh := make(chan dto.ReceivedEventMessage)
go sqsConsumer.Consume(megCh)
for {
select {
case message := <-megCh:
service.ForConsumerService(message)
}
}
}
비동기 프로그래밍으로 만들어서 고루틴을 계속 돌린다.
메시지 값을 채널에 넣는다.
우선 Consume 함수를 만들었다.
그 안에 지금까지 만들었던 메시지를 가져오는 코드를 넣었다.
그리고 그걸 채널에 넣었다.
func (s SqsConsumer) Consume(chan dto.ReceivedEventMessage) {
for {
if 메시지가 있으면 {
return c <- ReceivedEventMessage
}else {
continue
}
}
}
채널안에 있는 메시지를 가지고 와서 메시지를 보낸다.
# ForConsumerService()
func ForConsumerService(message dto.ReceivedEventMessage) {
code, err = MessageService{}.ProcessMessage(message)
if err != nil {
if code >= 400 && code < 500 {
// 400번대 에러
}
if code >= 500 && code < 600 {
// 500번대 에러
}
}else{
//메시지 삭제
}
}
이 함수에 메시지를 가져온다.
code, err = MessageService{}.ProcessMessage(message)
ProcessMessage 함수에서는 EventType에 맞게 content를 만들어서 메시지 보내는 함수로 보낸다.
code, err = message.SendDonationRegisteredMessage(content)
이메일를 보내는 코드, 문자를 보내는 코드, 카카오 알림톡 보내는 코드를 SendDonationRegisteredMessage에 작성했다. 그리고
응답코드와 에러메시지를 받아온다.
그래서 ForConsumerService() 에서
200번이면 메시지 삭제를 한다.
400번대 에러와 500번대 에러를 처리하면 된다.
메시지 보내는 구조를 만들어 봤다.
다음엔 400번일 때에는 슬랙으로 남기는 코드를 만들어 보자!
# 참고 이슈
https://github.com/YooGenie/receive-message-service/issues/29
반응형
'사이드 프로젝트 > Amazon SQS' 카테고리의 다른 글
[Amazon SQS] MissingRegion: could not find region configuration 에러 메시지 (0) | 2023.07.24 |
---|---|
[slack] 슬랙(slack)으로 에러 메시지를 받기 위해서 slack에서 설정하기 (0) | 2023.07.06 |
[Amazon SQS] 서비스를 죽지 않게 for 문을 돌려보자 (0) | 2023.06.28 |
[Amazon SQS] SQS에서 메시지 삭제하는 과정에서 에러 (0) | 2023.06.27 |
[Amazon SQS] SQS로 메시지 보내기 (0) | 2023.06.26 |