AWS SQS의 FIFO 큐를 해봤어요.
배경.
2018년 11월 AWS의 도쿄 권역에서 SQS(Simple Que Service)의 FIFO 큐를 제작할 수 있기 때문에 사용해 봤다.
지금까지의 큐는 SQS의 특징을 애플리케이션에서 보완해야 하기 때문에 조금 곤란했습니다.
FIFO 대기열이란?
스탠더드와 가장 큰 차이점은
스탠더드와 가장 큰 차이점은
자세한 건 공개해주세요.
쓰다
SQS로 큐 만들기
비록 이렇게 말하지만, 좀 간단하기 때문에, 나는 먼저 사랑을 끊는다.(신칸센 표를 사는 것보다 간단하다...)
기본적으로 직접 사용할 수 있지만 기준의 귀여움이 다른 설정만 설명하면 된다.
대기열 이름의 마지막 요구 사항 .fifo
컨텐츠 기반 중복 제거 확인란을 엽니다.
ON으로 설정하지 않으면 정보 로그인이 실패합니다.
aws-sdk로 메시지 등록
이번에 루비의 aws-sdk를 사용하여 정보 등록을 했습니다.
나는 언어에 특별히 신경을 쓰지 않는다. 단지 대량으로 등록하고 싶을 뿐이다.
send_message.rbrequire 'aws-sdk'
sqs = Aws::SQS::Client.new(
region: 'ap-northeast-1', # 東京リージョン
access_key_id: 'access_key_id',
secret_access_key: 'secret_access_key',
)
url = 'url' # FIFOキューのURL(マネージメントコンソールで確認するやつ)
for num in 1..1000 do
response = sqs.send_message({
queue_url: url,
message_body: 'standard queue message ' + num.to_s, # 登録した順番がわかるようにナンバリング
message_attributes: { # message_attributesは特にこだわらない
'Title' => {
string_value: 'title',
data_type: 'String'
},
'Author' => {
string_value: 'author',
data_type: 'String'
},
'WeeksOn' => {
string_value: '6',
data_type: 'Number'
}
},
message_group_id: 'b-group', # 標準キュート違ってmessage_group_idが必須
})
end
파와 다른 경우message_group_id
는 필수다.
message_group_아이디에 따라 순서를 유지할 수 있을 것 같아요.
여러 호스트에서 메시지를 등록할 때 메시지 -group_id를 설정할 필요가 있을 것 같습니다.
대기열 메시지 가져오기
1000개의 정보를 얻으려고 시도하다.
이것도 aws-sdk로 얻을 수 있습니다.
receive_message.rbrequire 'aws-sdk'
sqs = Aws::SQS::Client.new(
region: 'ap-northeast-1', # 東京リージョン
access_key_id: 'access_key_id',
secret_access_key: 'secret_access_key',
)
url = 'url' # FIFOキューのURL(マネージメントコンソールで確認するやつ)
loop do
# メッセージ受信
res = sqs.receive_message(queue_url: url,
max_number_of_messages: 1,
visibility_timeout: 60,
wait_time_seconds: 1)
# 0件だったらループから抜ける
break if !res || !res.respond_to?(:messages) || res.messages.count.zero?
# メッセージ出力
puts res.messages[0].body
# メッセージ削除
handle = res.messages[0].receipt_handle
delete_res = sqs.delete_message({
queue_url: url,
receipt_handle: handle,
})
end
우리는 스탠더드와 별 차이가 없다.
지정message_group_id
방법이 있습니까?없어요?
따라서 결과는 다음과 같다standard queue message 1
standard queue message 2
standard queue message 3
・
・
・
standard queue message 998
standard queue message 999
standard queue message 1000
이렇게 등록한 순서대로 얻을 수 있다.
※ 스탠드는 순서를 유지할 수 없기 때문에 이런 느낌이 든다.standard queue message 6
standard queue message 5
standard queue message 9
・
・
・
standard queue message 998
standard queue message 995
standard queue message 999
감상
예전에는 스탠더드만 있었기 때문에 순서를 유지할 수 없었던 점을 응용 측의 기능으로 보완했다.(순서성이 중요한 데이터와 계산이 있기 때문이다. 기본적으로 중요하다고 말하는 사람도 있겠지w)
FIFO 대열이 도쿄 지역 중심에 와서 솔직히 기쁩니다. 표준 대열과 마찬가지로 대단합니다!
그 다음은 FIFO 대기열로 이동할 때의 영향 범위 조사인가요?
Reference
이 문제에 관하여(AWS SQS의 FIFO 큐를 해봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hiroky_814/items/03e28eff4407b4e04d42
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
require 'aws-sdk'
sqs = Aws::SQS::Client.new(
region: 'ap-northeast-1', # 東京リージョン
access_key_id: 'access_key_id',
secret_access_key: 'secret_access_key',
)
url = 'url' # FIFOキューのURL(マネージメントコンソールで確認するやつ)
for num in 1..1000 do
response = sqs.send_message({
queue_url: url,
message_body: 'standard queue message ' + num.to_s, # 登録した順番がわかるようにナンバリング
message_attributes: { # message_attributesは特にこだわらない
'Title' => {
string_value: 'title',
data_type: 'String'
},
'Author' => {
string_value: 'author',
data_type: 'String'
},
'WeeksOn' => {
string_value: '6',
data_type: 'Number'
}
},
message_group_id: 'b-group', # 標準キュート違ってmessage_group_idが必須
})
end
require 'aws-sdk'
sqs = Aws::SQS::Client.new(
region: 'ap-northeast-1', # 東京リージョン
access_key_id: 'access_key_id',
secret_access_key: 'secret_access_key',
)
url = 'url' # FIFOキューのURL(マネージメントコンソールで確認するやつ)
loop do
# メッセージ受信
res = sqs.receive_message(queue_url: url,
max_number_of_messages: 1,
visibility_timeout: 60,
wait_time_seconds: 1)
# 0件だったらループから抜ける
break if !res || !res.respond_to?(:messages) || res.messages.count.zero?
# メッセージ出力
puts res.messages[0].body
# メッセージ削除
handle = res.messages[0].receipt_handle
delete_res = sqs.delete_message({
queue_url: url,
receipt_handle: handle,
})
end
standard queue message 1
standard queue message 2
standard queue message 3
・
・
・
standard queue message 998
standard queue message 999
standard queue message 1000
standard queue message 6
standard queue message 5
standard queue message 9
・
・
・
standard queue message 998
standard queue message 995
standard queue message 999
예전에는 스탠더드만 있었기 때문에 순서를 유지할 수 없었던 점을 응용 측의 기능으로 보완했다.(순서성이 중요한 데이터와 계산이 있기 때문이다. 기본적으로 중요하다고 말하는 사람도 있겠지w)
FIFO 대열이 도쿄 지역 중심에 와서 솔직히 기쁩니다. 표준 대열과 마찬가지로 대단합니다!
그 다음은 FIFO 대기열로 이동할 때의 영향 범위 조사인가요?
Reference
이 문제에 관하여(AWS SQS의 FIFO 큐를 해봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiroky_814/items/03e28eff4407b4e04d42텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)