Skip to content

Instantly share code, notes, and snippets.

@AstroTom
Last active December 23, 2022 13:36
Show Gist options
  • Save AstroTom/4c81c629a68252e6f0be176ecf131c4a to your computer and use it in GitHub Desktop.
Save AstroTom/4c81c629a68252e6f0be176ecf131c4a to your computer and use it in GitHub Desktop.
sample AWS sqs in CLI
# Create Q
ENV=dev1
Qname=tom-test1
Q1=$(aws sqs create-queue --queue-name "$ENV-$Qname" --output text)
echo $Q1
aws sqs send-message --queue-url $Q1 --message-body "Test message 1 from Tom"
#get no. of msgs
aws sqs get-queue-attributes --queue-url $Q1 --attribute-names ApproximateNumberOfMessages
#get all Q attributes
aws sqs get-queue-attributes --queue-url $Q1 --attribute-names All --output json
# send 2nd msgs
aws sqs send-message --queue-url $Q1 --message-body "Test message 2 from Tom"
Timeout=10
# get message
J=$(aws sqs receive-message --queue-url $Q1 --output json --visibility-timeout $Timeout); echo $J|jq '.Messages[0].Body' ; ReceiptHandle=$(echo $J|jq '.Messages[0].ReceiptHandle')
#echo $ReceiptHandle
# delete msg
aws sqs delete-message --queue-url $Q1 --receipt-handle $(eval echo $ReceiptHandle)
# check no. of messages
aws sqs get-queue-attributes --queue-url $Q1 --attribute-names ApproximateNumberOfMessages
# See message visibility timeout
sleep 5
aws sqs get-queue-attributes --queue-url $Q1 --attribute-names ApproximateNumberOfMessages
# -- demo timeout loop
# get message
J=$(aws sqs receive-message --queue-url $Q1 --output json --visibility-timeout $Timeout)
echo Message is:
echo $J|jq '.Messages[0].Body'
ReceiptHandle=$(echo $J|jq '.Messages[0].ReceiptHandle')
#echo $ReceiptHandle
NotDone=10
while (( NotDone-- ))
do
aws sqs change-message-visibility --queue-url $Q1 --receipt-handle $(eval echo $ReceiptHandle) --visibility-timeout 10
echo doing work on this message
done
# delete msg
aws sqs delete-message --queue-url $Q1 --receipt-handle $(eval echo $ReceiptHandle)
# get message with long polling
# empty Q
aws sqs purge-queue --queue-url $Q1
# confirm empty
aws sqs receive-message --queue-url $Q1 --output json
# long poll
J=""
aws sqs receive-message --queue-url $Q1 --output json --wait-time-seconds 10
#send from other terminal:
Q1=https://eu-west-1.queue.amazonaws.com/069157535684/dev1-tom-test1
aws sqs send-message --queue-url $Q1 --message-body "Test message from other window"
# delete Q
aws sqs delete-queue --queue-url $Q1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment