代码之家  ›  专栏  ›  技术社区  ›  Mrugesh

sqs在接收消息时不给我MessageAttributes

  •  2
  • Mrugesh  · 技术社区  · 6 年前

    我编写了以下API来接收消息:

    app.get('/receive', function(req, res) {
        var params = {
            QueueUrl: queueUrl,
            VisibilityTimeout: 600
        };
    
        sqs.receiveMessage(params, function(err, data) {
            if (err) {
                res.send(err);
            } else {
                console.log('data is ' + JSON.stringify(data));
                res.send(data);
            }
        });
    });
    

    我得到的答复如下:

    {
        "ResponseMetadata": {
            "RequestId": "id"
        },
        "Messages": [
            {
                "MessageId": "id",
                "ReceiptHandle": "handle",
                "MD5OfBody": "body",
                "Body": "body"
            }
        ]
    }
    

    .

    API的发送消息格式如下所示:

     let params = {
                           MessageBody: object,
                           QueueUrl: process.env.queueUrl,
                            MessageAttributes:{
                               "Title":{
                                   DataType:'String',
                                   StringValue:'Item Id Array',
                               }
                            },
                           DelaySeconds: 0
                       }
                       sqs.send(params, (err, data) => {
                           console.log('------------the send message data is------------',err,data);
                       });
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   sorjef    6 年前

    您必须告诉SQS要在传递给的参数中接收哪些属性 receiveMessage 作用

    所以在你的情况下 params 中的定义 /receive 路线可能如下所示:

    var params = {
        QueueUrl: queueUrl,
        VisibilityTimeout: 600,
        MessageAttributeNames: ["All"],
    };
    

    有关详细信息,请查看以下链接:

    1. JavaScript SQS Example
    2. 中的“调用receiveMessage操作”示例 AWS JavaScript SDK doc
    3. 中的“MessageAttributeName.N”参数 AWS SQS API doc
        2
  •  0
  •   Niraj Sonawane    2 年前

    要接收所有SQS属性-> .attributeNames(QueueAttributeName.ALL)

    要接收消息元数据属性-> .messageAttributeNames("yourMessageAttributeName")

    爪哇/科特林

     val request = ReceiveMessageRequest.builder()
                    .queueUrl(url)                
                    .messageAttributeNames("yourMessageAttributeName")
                    .attributeNames(QueueAttributeName.ALL)
                    .build()
            val messages = client.receiveMessage(receiveMessageRequest).messages()