SQS에 메시지 넣었다.
간단히 넣는 방법은 이전 글을 참고하면 된다.
2022.11.15 - [사이드 프로젝트/Amazon SQS] - [Amazon SQS] SNS를 통해 FIFO방식으로 SQS에 메시지 보내기
[Amazon SQS] SNS를 통해 FIFO방식으로 SQS에 메시지 보내기
# 배경 이메일 아니라 큐에 메시지를 보내야 했다. 1) FIFO 방식이 아닌 표준방식 SNS만들고 SQS 연결했다. 이 때 메시지가 잘 보내졌다. 2) SNS에서 FIFO방식으로 만들고 FIFO방식의 SQS도 만들어서 연결
pink1016.tistory.com
원하는 방식대로 메시지를 보낼 수 있다.
알림톡 종류가 여러개여서 구분하기 위해서 eventType를 넣었다.
# mian
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))
SQSURL := "SQSURL 주소 넣기"
eventType := "donationRegistered"
message := map[string]interface{}{
"donationId": 1,
"memberId": 1,
"mobile": "01000000000",
"content": "메시지 내용입니다.",
}
err := send.SendSqsMessage(sess, &SQSURL, eventType, message)
if err != nil {
log.Println("메시지 전송 에러")
}
# SendSqsMessage
func SendSqsMessage(sess *session.Session, queueURL *string, eventType string, content interface{}) error {
svc := sqs.New(sess)
messageGroupId := eventType
messageDeduplicationId := uuid.New().String()
messageBody, _ := json.Marshal(content)
dataType := "String"
var _, err = svc.SendMessage(&sqs.SendMessageInput{
MessageAttributes: map[string]*sqs.MessageAttributeValue{
"EventType": {
DataType: &dataType,
StringValue: &eventType,
},
"Env": {
DataType: &dataType,
StringValue: &config.Config.Environment,
},
"Module": {
DataType: &dataType,
StringValue: &config.Config.Module,
},
},
MessageBody: aws.String(string(messageBody)),
QueueUrl: queueURL,
MessageGroupId: &messageGroupId,
MessageDeduplicationId: &messageDeduplicationId,
})
if err != nil {
return err
}
return nil
}
MessageAttributes안에 구별할 수 있는 값들을 넣었다. 우리는 staging, dev, prod로 구별에서 로그가 들어가서 넣었다.
서비스도 많아서 서비스도 구분하기 위해서 모듈을 넣었다.
이렇게 정보를 구분해서 보냈다.
그럼 받는 쪽에서는 어떻게 받을까?
msgResult.Messages[i].MessageAttributes 안에 보낸 내용들이 있다.
map[Env:{ DataType: "String", StringValue: "local" }
EventType:{ DataType: "String", StringValue: "donationRegistered" }
Module:{ DataType: "String", StringValue: "send-message-service" }]
바디값에는 *msgResult.Messages[i].Body
{"content":"메시지 내용입니다.","donationId":1,"memberId":1,"mobile":"01000000000"}
이렇게 값이 들어가 있다.
메시지가 sqs에 들어오고 출력하는 것까지 공부했다.
이제는 서비스가 죽지 않고 계속 돌게 만들어야겠다.
# 참고 글
https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/using-sns-with-go-sdk.html
Amazon SNS Examples Using the AWS SDK for Go - AWS SDK for Go (version 1)
Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.
docs.aws.amazon.com
# 이슈
https://github.com/YooGenie/send-message-service/issues/17
SQS로 메시지 보내기 · Issue #17 · YooGenie/send-message-service
github.com
'사이드 프로젝트 > Amazon SQS' 카테고리의 다른 글
[Amazon SQS] 서비스를 죽지 않게 for 문을 돌려보자 (0) | 2023.06.28 |
---|---|
[Amazon SQS] SQS에서 메시지 삭제하는 과정에서 에러 (0) | 2023.06.27 |
[Amazon SQS] SNS을 사용하는 것이 맞나? (0) | 2023.06.25 |
[Amazon SQS] 메시지 보관 날짜 시간 설정하는 방법 (0) | 2023.06.24 |
[Amazon SQS] SQS에서 메시지를 받으면 자동 삭제가 되는지? (0) | 2023.06.23 |