pull은 가져가도 돼? 한 다음에 가져가는 것
push는 subscriber를 찔러서 가져가는 것
<토픽 하나 생성>
aws sqs > 표준 > queue이름 아무거나 > 암호화 원래 시켜야 하지만,, 비활성화로 > 액세스 정책 (JSON편집, Principal : "*" < 모두다 이용할 수 있게) > 나머지는 다 비활성화 > 대기열(큐) 생성
AWS 콘솔에서 테스트
> '메시지 전송 및 수신'으로 테스트 가능
> 메시지 받을 땐 '메시지 풀링' 누르면 됨
파이썬 코드 boto3으로 테스트
queue_url에 대기열 넣으면 됨
messageBody에 메시지 입력하면 된다.
> 송신코드
import boto3
sqs = boto3.client('sqs')
queue_url = '[대기열 url 입력]'
response = sqs.send_message(
QueueUrl=queue_url,
MessageBody=('[보내고자하는 메시지 입력]')
)
print(response['MessageId'])
> 수신코드
import boto3
sqs = boto3.client('sqs')
queue_url = '[대기열 url 입력]'
response = sqs.receive_message(
QueueUrl=queue_url
)
message = response['Messages'][0]
receipt_handle = message['ReceiptHandle']
sqs.delete_message(
QueueUrl=queue_url,
ReceiptHandle=receipt_handle
)
print('Received and deleted message: %s' % message)
액세스 키 설정해줘야한다.
안그럼, 이렇게 오류뜬다..
액세스 키 발급받고, aws configure명령어로 키 입력하고, send 한 후, receive해보니,
보낸 message라는 데이터가 잘 받아지는 것을 확인할 수 있었다.
REST API로 테스트
> 송신
대기열 url(=https://~)?Action=SendMessage&MessageBody=보내고자 하는 메시지
빨간색으로 표시한 부분이 보내는 메시지를 해시값으로 바꾼 것이다.
> 수신
대기열 url(=https://~)?Action=ReceiveMessage
데이터가 받아지는 순서가 없어서 위에서 보냈던 메시지가 받아올 때 까지 새로고침을 눌렀다.
원하는 메시지가 안 받아진 모습...
받아졌다! 첫번째 Body에 출력되는 데이터로 확인
*lambda는 원래 API GATEWAY를 통해서 호출했는데 SQS를 통해서 호출할 수도 있다.
'클라우드 > AWS' 카테고리의 다른 글
AWS) AWS의 ElasticSearch, OpenSearch 사용하기 (0) | 2023.03.23 |
---|---|
ElasticSearch 클러스터 구성 (0) | 2023.03.22 |
리눅스, kafka와 zookeeper 클러스터 상태에서의 장애 상황 테스트 (0) | 2023.03.21 |
리눅스, kafka 클러스터 구성하기 (0) | 2023.03.21 |
리눅스, zookeeper 클러스터 구성하기 (0) | 2023.03.21 |