Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从AmazonSQS获取特定消息_Javascript_Node.js_Typescript_Amazon Sqs - Fatal编程技术网

Javascript 从AmazonSQS获取特定消息

Javascript 从AmazonSQS获取特定消息,javascript,node.js,typescript,amazon-sqs,Javascript,Node.js,Typescript,Amazon Sqs,是否有任何方法可以通过某个id检索消息。在本文中,这是不可能的。但由于答案是旧的,所以我再次问它是否仍然是相同的 我用下面的方式发送消息- const params = { DelaySeconds: 0, MessageAttributes: { test: { DataType: 'String', StringValue: 'bdbdh', }, }, MessageBo

是否有任何方法可以通过某个id检索消息。在本文中,这是不可能的。但由于答案是旧的,所以我再次问它是否仍然是相同的

我用下面的方式发送消息-

const params = {
      DelaySeconds: 0,
      MessageAttributes: {
        test: {
          DataType: 'String',
          StringValue: 'bdbdh',
        },
      },
      MessageBody: JSON.stringify({
        AccountId: '100'
      }),
      QueueUrl: 'url',
    };

    return new Promise((resolve, reject) => {
      sqs.sendMessage(params, function(err, data) {
        if (err) {
          console.log('data', err);
          reject(err);
        } else {
          console.log('data', data);
          resolve(data);
        }
      });
    });
const params = {
      MaxNumberOfMessages: 10,
      MessageAttributeNames: ["test"],
      VisibilityTimeout: 600,
      QueueUrl: 'url',
    };

    return new Promise((resolve, reject) => {
      sqs.receiveMessage(params, function(err, data) {
        if (err) {
          console.log('data', err);
          reject(err);
        } else {
          console.log('data', data);
          resolve(data);
        }
      });
    });
以下面的方式检索消息-

const params = {
      DelaySeconds: 0,
      MessageAttributes: {
        test: {
          DataType: 'String',
          StringValue: 'bdbdh',
        },
      },
      MessageBody: JSON.stringify({
        AccountId: '100'
      }),
      QueueUrl: 'url',
    };

    return new Promise((resolve, reject) => {
      sqs.sendMessage(params, function(err, data) {
        if (err) {
          console.log('data', err);
          reject(err);
        } else {
          console.log('data', data);
          resolve(data);
        }
      });
    });
const params = {
      MaxNumberOfMessages: 10,
      MessageAttributeNames: ["test"],
      VisibilityTimeout: 600,
      QueueUrl: 'url',
    };

    return new Promise((resolve, reject) => {
      sqs.receiveMessage(params, function(err, data) {
        if (err) {
          console.log('data', err);
          reject(err);
        } else {
          console.log('data', data);
          resolve(data);
        }
      });
    });

我还尝试通过属性名获取消息,但没有成功。

不幸的是,我认为没有办法通过id从sqs中提取消息

根据SQS文档,没有可以传递的参数:

var params = {
  QueueUrl: 'STRING_VALUE', /* required */
  AttributeNames: [
    All | Policy | VisibilityTimeout | MaximumMessageSize | MessageRetentionPeriod | ApproximateNumberOfMessages | ApproximateNumberOfMessagesNotVisible | CreatedTimestamp | LastModifiedTimestamp | QueueArn | ApproximateNumberOfMessagesDelayed | DelaySeconds | ReceiveMessageWaitTimeSeconds | RedrivePolicy | FifoQueue | ContentBasedDeduplication | KmsMasterKeyId | KmsDataKeyReusePeriodSeconds,
    /* more items */
  ],
  MaxNumberOfMessages: 'NUMBER_VALUE',
  MessageAttributeNames: [
    'STRING_VALUE',
    /* more items */
  ],
  ReceiveRequestAttemptId: 'STRING_VALUE',
  VisibilityTimeout: 'NUMBER_VALUE',
  WaitTimeSeconds: 'NUMBER_VALUE'
};
sqs.receiveMessage(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

不可以。无法从Amazon SQS队列检索特定消息。您可以调用ReceiveMessage以获取1到10条消息,但无法选择要接收的消息

您可以将消息属性添加到消息中,例如优先级、客户编号,但它们不能用于检索特定消息或消息子集

通常,消息会按顺序返回,但这并不能保证。例如,一条不可见的消息,然后再次可见,则该消息将出现故障。此外,AmazonSQS使用的服务器的分布式特性也会影响消息顺序

见:

先进先出FIFO队列保证消息顺序,但它不能让您访问特定消息