Sample code for 30+ languages & platforms
Lianja

SQS Receive Message

See more Amazon SQS Examples

Retrieves one or more messages from an Amazon SQS queue, with a maximum limit of 10 messages, from the specified queue.

See SQS ReceiveMessage or detailed information.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

loRest = createobject("CkRest")

// Connect to the Amazon AWS REST server.
// such as https://sqs.us-west-2.amazonaws.com/
llBTls = .T.
lnPort = 443
llBAutoReconnect = .T.
llSuccess = loRest.Connect("sqs.us-west-2.amazonaws.com",lnPort,llBTls,llBAutoReconnect)

// Provide AWS credentials for the REST call.
loAuthAws = createobject("CkAuthAws")
loAuthAws.AccessKey = "AWS_ACCESS_KEY"
loAuthAws.SecretKey = "AWS_SECRET_KEY"
// the region should match our URL above..
loAuthAws.Region = "us-west-2"
loAuthAws.ServiceName = "sqs"

loRest.SetAuthAws(loAuthAws)

loRest.AddQueryParam("Action","ReceiveMessage")
loRest.AddQueryParam("MaxNumberOfMessages","5")
loRest.AddQueryParam("VisibilityTimeout","15")
loRest.AddQueryParam("AttributeName","All")
loRest.AddQueryParam("MessageAttributeName","All")

// Use the actual path part of your SQS queue URL here:
lcResponseXml = loRest.FullRequestNoBody("GET","/123456789123/chilkatTest")
if (loRest.LastMethodSuccess <> .T.) then
    ? loRest.LastErrorText
    release loRest
    release loAuthAws
    return
endif

// A successful response will have a status code equal to 200.
if (loRest.ResponseStatusCode <> 200) then
    ? "response status code = " + str(loRest.ResponseStatusCode)
    ? "response status text = " + loRest.ResponseStatusText
    ? "response header: " + loRest.ResponseHeader
    ? "response body: " + lcResponseXml
    release loRest
    release loAuthAws
    return
endif

// Examine the successful XML response.
loXml = createobject("CkXml")
loXml.LoadXml(lcResponseXml)
? loXml.GetXml()
? "----"

// A successful response looks like this:
// <?xml version="1.0" encoding="utf-8" ?>
// <ReceiveMessageResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/">
//     <ReceiveMessageResult>
//         <Message>
//             <Body>this is a test</Body>
//             <MD5OfBody>54b0c58c7ce9f2a8b551351102ee0938</MD5OfBody>
//             <ReceiptHandle>AQEBMyLof...UbKBTvHtEg==</ReceiptHandle>
//             <Attribute>
//                 <Name>SenderId</Name>
//                 <Value>957491831129</Value>
//             </Attribute>
//             <Attribute>
//                 <Name>ApproximateFirstReceiveTimestamp</Name>
//                 <Value>1475013283557</Value>
//             </Attribute>
//             <Attribute>
//                 <Name>ApproximateReceiveCount</Name>
//                 <Value>4</Value>
//             </Attribute>
//             <Attribute>
//                 <Name>SentTimestamp</Name>
//                 <Value>1475013283557</Value>
//             </Attribute>
//             <MessageId>52882c65-5e21-4450-9024-93a3b01e61d3</MessageId>
//             <MD5OfMessageAttributes>2ff68603f4239272bd03f543254ed040</MD5OfMessageAttributes>
//         </Message>
//     </ReceiveMessageResult>
//     <ResponseMetadata>
//         <RequestId>05ba5c92-80ee-5f87-be76-0cf67b7475d6</RequestId>
//     </ResponseMetadata>
// </ReceiveMessageResponse>

// Get some values from the XML:
? "Body: " + loXml.ChilkatPath("ReceiveMessageResult|Message|Body|*")
? "MessageId: " + loXml.ChilkatPath("ReceiveMessageResult|Message|MessageId|*")

lcUnused = loXml.ChilkatPath("ReceiveMessageResult|Message[0]|Attribute|$")

loRec = loXml.FindNextRecord("Name","SenderId")
? "SenderId: " + loRec.GetChildContent("Value")
release loRec

loRec = loXml.FindNextRecord("Name","ApproximateFirstReceiveTimestamp")
? "ApproximateFirstReceiveTimestamp: " + loRec.GetChildContent("Value")
release loRec

loRec = loXml.FindNextRecord("Name","ApproximateReceiveCount")
? "ApproximateReceiveCount: " + loRec.GetChildContent("Value")
release loRec

loRec = loXml.FindNextRecord("Name","SentTimestamp")
? "SentTimestamp: " + loRec.GetChildContent("Value")
release loRec

loXml.GetRoot2()


release loRest
release loAuthAws
release loXml