2014-08-28 169 views
0

我正在使用SQS 2009-02-01版。我創建了一個新的隊列,並在該隊列中創建了4條消息。 我試圖用MaxNumberOfMessages作爲4使用下面的函數來接收消息,但每個響應都顯示隨機單個消息。MaxNumberOfMessages無法正常工作亞馬遜SQS(Coldfusion)

<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> 

和響應XML是像下面

<?xml version="1.0"?><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> 

如何從接收消息的功能

回答

1

的「maxmessages」所有的消息只是 - 最大 - 它不是最低的消息發送。

您需要一些消息,SQS會爲您提供一些消息,包括最高金額,並且一旦您處理並刪除那些您可以要求更多的消息 - 您最終將獲得所有消息。