最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

需要解析SQS消息

IT培训 admin 6浏览 0评论

需要解析SQS消息

我有一些麻烦解析我AWS SQS消息时,我收到一条消息。

我的主要问题是,虽然它似乎是有点串起来还希望像一个对象。

到目前为止,我刚才一直在试图解析该消息,因此得到了很多console.log()typeof的。

sqs.receiveMessage(params, (err, data) => {
 if (err) console.log(err, err.stack); 
 else {
  messages = data; 
  console.log(typeof messages.Messages[2].Body); // #2
  let validMessage = JSON.parse(messages.Messages[2].Body); // #1
  console.log(`validMessage: ${validMessage}`); // Just doesn't print out
  console.log(typeof validMessage); // Errorr with #1 
  console.log(messages.Messages[2]); // gives #3 below
 }     
});

1:

SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)

2:

string

3:

{ MessageId: '2afe328d-0b23-4f21-82c5-47563cd994ef',
  ReceiptHandle: 
'AQEB4Giu1whgf6He9cJZVCNBzyfbIPPWlS5HOMLwsyC2lLODJbOudVIdLAx0R9U//XHP9CFr1xhycGzdFXPM1gkHRFf004G1AyqkuB1VPRd/RoQGDcJ9yiKw94b6L7i4VWqbCGdr0Dnz0IMw7ze+C69lE1+TD02L28crHscx+IuWdGKpFq79lOJjpbXfmYv4LP/m1fG3aWyRphKkgtFT/eOCpzqLbGn1Gq6h8RBxo7rexGW5SiNw9F/gVPVTpAWuJolOXv9duAzu8FF7rMnBl2bFjEbLirDtg1RwZtXdG64YsJF2pVwlWrAsx26W06GJocXI',
  `MD5OfBody: '1441a7909c087dbbe7ce59881b9df8b9',`
  `Body: '[object Object]' } `

我不知道我做错了,以及为什么它不工作的权利。只有两个,其中有电子邮件和令牌消息的Body性能。我想访问两者。

至于预期的结果,我希望能够通过做console.log(messages.Messages[i].Body.email)来访问电子邮件,它应该是等于[email protected]

回答如下:

要重现你的情况,我做了以下内容:

  • 创建Amazon SQS队列
  • 发送使用aws sqs send-message --queue-url ... --message-body foobar一个消息到队列
  • 检索经由码的消息

我是一个Python的人,而不是节点,但它应该是相同的总体思路:

import boto3

client=boto3.client('sqs',region_name='ap-southeast-2')

response = client.receive_message(QueueUrl='https://sqs.ap-southeast-2.amazonaws/743112987576/stack')
print (response)
print (response['Messages'][0]['Body'])

格式化的response是:

{
    u'Messages': [
        {
            u'Body': 'foobar', 
            u'ReceiptHandle': '...', 
            u'MD5OfBody': '...', 
            u'MessageId': '...'
        }
    ], 
    'ResponseMetadata': {...}
}

而最终的输出是foobar

这是可能的节点SDK处理事情有点不同,你可能需要一个字符串转换成JSON对象。

需要解析SQS消息

我有一些麻烦解析我AWS SQS消息时,我收到一条消息。

我的主要问题是,虽然它似乎是有点串起来还希望像一个对象。

到目前为止,我刚才一直在试图解析该消息,因此得到了很多console.log()typeof的。

sqs.receiveMessage(params, (err, data) => {
 if (err) console.log(err, err.stack); 
 else {
  messages = data; 
  console.log(typeof messages.Messages[2].Body); // #2
  let validMessage = JSON.parse(messages.Messages[2].Body); // #1
  console.log(`validMessage: ${validMessage}`); // Just doesn't print out
  console.log(typeof validMessage); // Errorr with #1 
  console.log(messages.Messages[2]); // gives #3 below
 }     
});

1:

SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)

2:

string

3:

{ MessageId: '2afe328d-0b23-4f21-82c5-47563cd994ef',
  ReceiptHandle: 
'AQEB4Giu1whgf6He9cJZVCNBzyfbIPPWlS5HOMLwsyC2lLODJbOudVIdLAx0R9U//XHP9CFr1xhycGzdFXPM1gkHRFf004G1AyqkuB1VPRd/RoQGDcJ9yiKw94b6L7i4VWqbCGdr0Dnz0IMw7ze+C69lE1+TD02L28crHscx+IuWdGKpFq79lOJjpbXfmYv4LP/m1fG3aWyRphKkgtFT/eOCpzqLbGn1Gq6h8RBxo7rexGW5SiNw9F/gVPVTpAWuJolOXv9duAzu8FF7rMnBl2bFjEbLirDtg1RwZtXdG64YsJF2pVwlWrAsx26W06GJocXI',
  `MD5OfBody: '1441a7909c087dbbe7ce59881b9df8b9',`
  `Body: '[object Object]' } `

我不知道我做错了,以及为什么它不工作的权利。只有两个,其中有电子邮件和令牌消息的Body性能。我想访问两者。

至于预期的结果,我希望能够通过做console.log(messages.Messages[i].Body.email)来访问电子邮件,它应该是等于[email protected]

回答如下:

要重现你的情况,我做了以下内容:

  • 创建Amazon SQS队列
  • 发送使用aws sqs send-message --queue-url ... --message-body foobar一个消息到队列
  • 检索经由码的消息

我是一个Python的人,而不是节点,但它应该是相同的总体思路:

import boto3

client=boto3.client('sqs',region_name='ap-southeast-2')

response = client.receive_message(QueueUrl='https://sqs.ap-southeast-2.amazonaws/743112987576/stack')
print (response)
print (response['Messages'][0]['Body'])

格式化的response是:

{
    u'Messages': [
        {
            u'Body': 'foobar', 
            u'ReceiptHandle': '...', 
            u'MD5OfBody': '...', 
            u'MessageId': '...'
        }
    ], 
    'ResponseMetadata': {...}
}

而最终的输出是foobar

这是可能的节点SDK处理事情有点不同,你可能需要一个字符串转换成JSON对象。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论