괴발개발 성장기

사이드 프로젝트/Amazon SQS

[Amazon SQS] 메시지를 채널에 넣어서 메시지 보내기 구조를 잡았다

지니유 2023. 7. 1. 14:07
반응형

# 메인

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

 

알림톡 서비스로 메시지를 이동시키기 · Issue #29 · YooGenie/receive-message-service

 

github.com

 

반응형