반응형
SQS에 메시지 넣었다.
간단히 넣는 방법은 이전 글을 참고하면 된다.
2022.11.15 - [사이드 프로젝트/Amazon SQS] - [Amazon SQS] SNS를 통해 FIFO방식으로 SQS에 메시지 보내기
원하는 방식대로 메시지를 보낼 수 있다.
알림톡 종류가 여러개여서 구분하기 위해서 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
# 이슈
https://github.com/YooGenie/send-message-service/issues/17
반응형
'사이드 프로젝트 > 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 |