如何在AWS SQS中传递地图

问题描述 投票:0回答:3

如何在AWS SQS队列中传递地图对象?

我有一个带有一些数据的地图对象,我想在AWS SQS队列中传递相同的地图,以便坚持下去。我怎么能这样做?

amazon-web-services amazon-sqs
3个回答
0
投票

我想你想存储地图,以便以后可以从SQS中消化它,因此我建议你序列化它。您应该序列化您的数据,而不是仅将地图发送到SQS并稍后尝试将其解析回地图,因为它更安全且更容易。

JSONMSGpack在序列化和反序列化方面很受欢迎。

这是一些伪代码:

some_map = {name: 'tom', age: 31}
serialized_map = make_into_json_function(some_map)
sqs.send_msg(queue, credentials, serialized_map)

要将JSON重新转换为地图:

message = sqs.get_msg(some_msg_id)
new_map = make_json_into_map_function(message.text)
print new_map

0
投票

这是我做的(它是100%工作):

试图在SQS中将地图值作为属性发送:使用setMessageAttributes,但是因为在SQS中你可以一次发送最多10个属性,因此它不符合我的要求(我的地图中有超过10个值)。

SQS提供了使用messageBody发送消息的选项,因此我将我的地图转换为普通的Json字符串并将其发送到SQS。

谢谢!


0
投票

我认为您需要将地图序列化为XML,JSON或无格式文本。收到消息时,将其反序列化到地图。 JSON可能是一个不错的选择,您可以使用jacksongson来序列化/反序列化JSON。

这是你应该记住的两个SQS limitations

  1. 留言内容: 消息只能包含XML,JSON和无格式文本。允许使用以下Unicode字符:#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF 此列表中未包含的任何字符都将被拒绝。有关更多信息,请参阅W3C字符规范。
  2. 邮件大小: 最小消息大小为1个字节(1个字符)。最大值为262,144字节(256 KB)。
© www.soinside.com 2019 - 2024. All rights reserved.