괴발개발 성장기
반응형

전체 글 219

[MySQL] 테이블 복제하는 방법

# 배경 로컬에서 DB를 재설계하기 위해서 원본을 복제해놨다. # 문법 CREATE TABLE IF NOT EXISTS 복사 테이블 SELECT * FROM 원본 테이블; # 예시 CREATE TABLE IF NOT EXISTS banners_copy SELECT * FROM banners; 전체 복제가 되었다. 그래서 컬럼 변경을 해서 테스트를 해봤다. 만약에 상태를 위해서 복제를 해 놓은 것이다. # 추가 내용 (2023.08.10) id 컬럼에 Primary key, Auto Increment 설정들이 사라졌다. 복제할 때 속성들은 복사가 안되고 구조와 데이터들만 복사가 된다는 사실을 알게 되었다.

Study/Mysql 2023.07.04

[Golang] 원하는 문자열 찾기

# 배경 기부금 영수증 관련한 API 중에서 속도가 느린게 몇 개 있었다. 속도 개선을 시킨 후 속도를 체크하고 싶었다. 그래서 내가 원하는 API 주소만 따로 내 프로젝트에 글을 남기고 싶었다. (4초 이상인 API만 글이 자동으로 남겨진다.) 내가 원하는 API 주소가 있는 찾기 위해서 원하는 문자열을 찾는 법을 알고 싶었다. # 문법 bool := strings.Contains(문자열, 찾고싶은문자열) 결과 값는 true, false가 두개 나온다. # 예시 strings.Contains("genie", "en") // true strings.Contains("genie", "ne") // false # 실제 사용한 경우 if strings.Contains(req.RequestURI, "donors..

Study/Go 언어 2023.07.03

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

# 메인 func main() { megCh := make(chan dto.ReceivedEventMessage) go sqsConsumer.Consume(megCh) for { select { case message := = 500 && code < 600 { // 500번대 에러 } }else{ //메시지 삭제 } } 이 함수에 메시지를 가져온다. code, err = MessageService{}.ProcessMessage(message) ProcessMessage 함수에서는 EventType에 맞게 content를 만들어서 메시지 보내는 함수로 보낸다. code, err = message.SendDonationRegisteredMessage(content) 이메일를 보내는 코드, 문자를 보내는 코..

[MySQL] 문자열 자르기

# 테이블명 deliveries # 컬럼명 sender_address 부산 부산진구 범천동 경기도 용인시 수지구 서울특별시 중구 소공로 # 구분자로 문자열로 자르기 # 문법 SUBSTRING_INDEX(컬럼명, 구분자, 구분자인덱스) # 예시 select SUBSTRING_INDEX(sender_address, ' ', 2) from deliveries # 결과 sender_address 부산 부산진구 경기도 용인시 서울특별시 중구 # 앞부분만 자르기 # 문법 SUBSTRING(컬럼명, 시작위치) - 1부터 시작이다. # 예시 select SUBSTRING(sender_address, 2) from deliveries ; # 결과 sender_address 산 부산진구 범천동 기도 용인시 수지구 울특별시..

Study/Mysql 2023.06.29

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

메시지를 한번 받으면 서비스가 죽는 구조였다. 그래서 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 ..

[Amazon SQS] SQS에서 메시지 삭제하는 과정에서 에러

메시지 하나 보내고 하나 삭제 하는 코드에서는 삭제가 잘되었다. receive-message-service가 죽지 않도록 for문을 돌리는 과정에서 메시지 삭제할 때 에러 메시지가 발생했다. # 에러 메시지 InvalidParameterValue: Value {값}= for parameter ReceiptHandle is invalid. Reason: The receipt handle has expired. status code: 400, request id: 값 메시지를 가져오는 코드에서 VisibilityTimeout 값을 5초로 했다. 그래서 제한 시간이 끝나면서 오류가 발생했다. 대기열에서 수신한 메시지가 다른 메시지 소비자에게 보이지 않게 되는 시간을 설정하는 것이다. 문제는 for문안에 시간을..

[Amazon SQS] SQS로 메시지 보내기

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.Mus..

[Amazon SQS] SNS을 사용하는 것이 맞나?

2023.06.15 - [사이드 프로젝트/Amazon SQS] - [Amazon SNS] SNS와 SQS 연결하는 방법 [Amazon SNS] SNS와 SQS 연결하는 방법 1. SNS를 생성한다. 1) 검색창에 "SNS"를 치면 "Simple Notification Service" 클릭하면 된다. 2) 왼쪽 상단 버튼을 클릭하면 아래와 같은 화면이 나온다. 주제를 클릭한다. 3) 주제 생성 버튼을 누른다 4) 세부 pink1016.tistory.com 1개의 SNS에 여러개의 큐와 서비스 연결하기 1) fifo로 SNS를 만들었다 2) 서로 다른 큐 2개를 구독했다. 3) sns에 메시지를 보냈다 4) 각 큐에 내용이 들어간다. 5) 2개의 receive 서비스를 돌리면 같은 내용이 나온다. 굳이 SN..

[Amazon SQS] 메시지 보관 날짜 시간 설정하는 방법

메시지 보관 날짜 시간 설정하는 방법 우선 aws에 들어간다. Amazon SQS -> 대기열에 들어가면 리스트가 있다. 원하는 sqs를 선택한다. 라디오 버튼을 누른 후 편집을 누르거나 빨간색 체크한 부분을 클릭후 안에서 편집을 누르면 된다. 메시지 보존 기간에서 초, 분, 시간, 일 정할 수 있다. 날짜를 정한다. "1분에서 14일 사이여야 합니다." 그리고 저장하면 된다. 보내고 삭제를 안하면 정해진 기간동안 큐안에서 있는다.

[Amazon SQS] SQS에서 메시지를 받으면 자동 삭제가 되는지?

어제 보낸 메시지가 SQS에 있다. 메시지를 보냈는데도 11개 그대로 있다는 걸 알 수 있었다. 그리고 aws에서도 SQS에 있는 메시지를 삭제하는 코드가 존재했다. func DeleteMessage(sess *session.Session, queueURL *string, messageHandle *string) error { svc := sqs.New(sess) _, err := svc.DeleteMessage(&sqs.DeleteMessageInput{ QueueUrl: queueURL, ReceiptHandle: messageHandle, }) if err != nil { return err } return nil } messageHandle 값이 중요하다. 이 값은 메시지안에 있다. *msgRes..

반응형