如何在AWS SQS队列中传递地图对象?
我有一个带有一些数据的地图对象,我想在AWS SQS队列中传递相同的地图,以便坚持下去。我怎么能这样做?
我想你想存储地图,以便以后可以从SQS中消化它,因此我建议你序列化它。您应该序列化您的数据,而不是仅将地图发送到SQS并稍后尝试将其解析回地图,因为它更安全且更容易。
这是一些伪代码:
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
这是我做的(它是100%工作):
试图在SQS中将地图值作为属性发送:使用setMessageAttributes,但是因为在SQS中你可以一次发送最多10个属性,因此它不符合我的要求(我的地图中有超过10个值)。
SQS提供了使用messageBody发送消息的选项,因此我将我的地图转换为普通的Json字符串并将其发送到SQS。
谢谢!
我认为您需要将地图序列化为XML,JSON或无格式文本。收到消息时,将其反序列化到地图。 JSON可能是一个不错的选择,您可以使用jackson或gson来序列化/反序列化JSON。
这是你应该记住的两个SQS limitations:
#x9 | #xA | #xD | #x20 to #xD7FF | #xE000 to #xFFFD | #x10000 to #x10FFFF
此列表中未包含的任何字符都将被拒绝。有关更多信息,请参阅W3C字符规范。