【问题标题】:MaxNumberOfMessages is not working Amazon SQSMaxNumberOfMessages 不起作用 Amazon SQS
【发布时间】:2019-10-18 18:10:48
【问题描述】:

我使用的是 SQS 版本 2009-02-01。我创建了一个新队列并在该队列中创建了 4 条消息。 我尝试使用 MaxNumberOfMessages 为 4 的以下函数接收消息,但每个响应都会显示随机单个消息。

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

如何从接收消息功能获取所有条消息?

【问题讨论】:

标签: amazon-web-services coldfusion amazon-sqs


【解决方案1】:

'maxmessages' 只是 - 一个最大值 - 它不是要发送的最少消息。

您请求一些消息,SQS 会为您提供一些消息,包括最大数量,一旦您处理和删除这些消息,您可以请求更多 - 您最终会得到所有消息。

【讨论】:

    【解决方案2】:

    尝试将 WaitTimeSeconds 增加到 20 秒,它将解决您的问题。

    【讨论】:

    • 能详细解释一下吗?
    猜你喜欢
    • 2013-07-25
    • 2021-06-01
    • 1970-01-01
    • 2012-02-03
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多