I'm using SQS version 2009-02-01. I created a new queue and created 4 messages in that queue. I tried to receive messages using below function with MaxNumberOfMessages as 4 but random single message is displaying for every response.
<cfset awsAccessKeyId = "XXXXX"/>
<cfset secretAccessKey = "XXXXXXXX"/>
<cfset sqs = CreateObject("component", "amazonsqs").init(awsAccessKeyId, secretAccessKey)/>
<cfset Recvmsg = sqs.SQSreceiveMessage(queue='298726564284/Queue2')/>
<cffunction name="SQSreceiveMessage" output="false" returntype="any">
<cfargument name="queue" type="string" required="true"/>
<cfargument name="amount" type="numeric" required="true"/>
<cfset Function.dateTimeString = dateFormat( now(), "yyyy-mm-dd" ) &"T" &timeFormat( now(), "HH:mm:ss" ) &"Z"/>
<cfset Function.fixedData = "ActionReceiveMessage" &
"AttributeNameAll"&
"AWSAccessKeyId#This.awsAccessKeyId#" &
"Expires#Function.dateTimeString#" &
"MaxNumberOfMessages4"&
"SignatureMethodHmacSHA1"&
"SignatureVersion1"&
"Version#This.sqsVersion#"&
"VisibilityTimeout15"
/>
<cfset Function.signature = createSignature(Function.fixedData)/>
<cfhttp method="GET" url="#This.SQSserviceUrl#/#Arguments.queue#" charset="UTF-8">
<cfhttpparam type="url" name="Action" value="ReceiveMessage"/>
<cfhttpparam type="url" name="AttributeName" value="All"/>
<cfhttpparam type="url" name="AWSAccessKeyId" value="#This.awsAccessKeyId#"/>
<cfhttpparam type="url" name="Expires" value="#Function.dateTimeString#"/>
<cfhttpparam type="url" name="MaxNumberOfMessages" value="4"/>
<cfhttpparam type="url" name="Signature" value="#Function.signature#"/>
<cfhttpparam type="url" name="SignatureMethod" value="HmacSHA1"/>
<cfhttpparam type="url" name="SignatureVersion" value="1"/>
<cfhttpparam type="url" name="Version" value="#This.sqsVersion#"/>
<cfhttpparam type="url" name="VisibilityTimeout" value="15"/>
</cfhttp>
<cfreturn cfhttp>
</cffunction>
and the response xml is like below
<?xml version="1.0" encoding="UTF-8"?>
<ReceiveMessageResponse xmlns="http://queue.amazonaws.com/doc/2009-02-01/">
<ReceiveMessageResult>
<Message>
<Body>Sree Test @ 11:32</Body>
<ReceiptHandle>+eXJYhj5rDrOel0ZHW3NR2q08uP0aaoVA8HrY/zch2J6b04T/wXiPrqAZx40IL60Jn+y3Ll4BHHs/3BQ7dTJR0SnjmqjgHI+pxmFUqvQ77ncStqJ0z7+7hnKyQBSnJgi1E5ScG7SgWkv9u0UDKFMkgZCZio29XPKAm7ZvYHAxXt0mAJHCXzcseh0albm/Dr/w7jNhsmK3eHs84PUuG256a09NxnDp0PhRgY3R+VxbKBZjdaaRsq0BU6j8sfyNjmylyGgZvHreitVyQm4LvnIBxl3HOnwOEKDFOziypP7lS8=</ReceiptHandle>
<MD5OfBody>58461dc4aacf99d0c5cb3a2514d72e52</MD5OfBody>
<Attribute>
<Name>SenderId</Name>
<Value>AIDAJKBGOBWAWOBX752KI</Value>
</Attribute>
<Attribute>
<Name>ApproximateFirstReceiveTimestamp</Name>
<Value>1409153512501</Value>
</Attribute>
<Attribute>
<Name>ApproximateReceiveCount</Name>
<Value>13</Value>
</Attribute>
<Attribute>
<Name>SentTimestamp</Name>
<Value>1409153512501</Value>
</Attribute>
<MessageId>068f8131-360c-4824-a133-660ff7108063</MessageId>
</Message>
</ReceiveMessageResult>
<ResponseMetadata>
<RequestId>2db8480b-9a1f-569a-8d43-047282ff5ce1</RequestId>
</ResponseMetadata>
</ReceiveMessageResponse>
How can I get all messages from Receive Messages function?