괴발개발 성장기

사이드 프로젝트/Amazon SQS

[Amazon SQS] 서비스를 죽지 않게 for 문을 돌려보자

지니유 2023. 6. 28. 15:06
반응형

메시지를 한번 받으면 서비스가 죽는 구조였다.

그래서 for문을 통해서 계속 서비스가 돌아가게 만들어 보자!

 

for {
	time.Sleep(time.Second * 5)

	msgResult, _ := service.GetMessages(sess, &queueURL, &timeout)

	if len(msgResult.Messages) != 0 {
		for i, _ := range msgResult.Messages {
			fmt.Println(i, "번째 메시지 바디내용", *msgResult.Messages[i].Body)
			messageHandle := *msgResult.Messages[i].ReceiptHandle
			if messageHandle == "" {
			log.Println("You must supply message receipt handle (-m MESSAGE-HANDLE)")
			}
			err = service.DeleteMessage(sess, &queueURL, &messageHandle)
			if err != nil {
				log.Println("Got an error deleting the message:", err)
			}
			log.Println("Deleted message from queue with URL " + queueURL)
		}
	} else {
			log.Println("서비스2 -큐에 아무것도 없음!!")
		}
	}

1) 첫번째 for문은  SQS에서 메시지를 계속 가져온다

2) 가져온 메시지들을 for문을 통해서 보낸다.

3) 그리고 보낸 메시지들을 삭제한다

4) SQS에 메시지가 없으면 else문으로 간다.

 

이제 이부분을 고루틴을 사용하여 만들어야겠다. 이 때 채널을 이용해서 해보자!

 

 

# 보충

Consumer : 메시지를 수신하는 주체. Queue에 직접 접근하여 메시지를 가져온다.

 

# 참조

https://github.com/YooGenie/receive-message-service/issues/21

 

서비스가 죽지 않고 계속 돌게 만들기 · Issue #21 · YooGenie/receive-message-service

 

github.com

 

 

 

반응형