我正在设置一个sqs队列来摄取一块配置数据,以便由后端容器处理。我的第一个想法是把带有配置信息的字典json.dumps传递给MessageBodysqsclient.send_message()参数。然而,在阅读完这些文档之后,我发现还有一个MessageAttributes参数,看起来我可以相对容易地将键值对传递到(Docs for sqsclient.sendmessage()
我不太确定两者之间的区别,也不知道使用一个比另一个有什么好处。作为参考,我是在EC2实例的容器上运行的python脚本中摄取队列。

最佳答案

所以,如果我理解正确的话,它的好处就是数据类型验证?
不。
这样做的好处是,元数据本质上是带外的:您可以将元数据(关于有效负载的信息)附加到SQS消息的“外部”,而不必修改(甚至不必理解)要在消息(正文)中放什么。
如果所讨论的信息是消息的一部分,那么它应该放在正文中。另一方面,如果它与消息有关,则可能需要将其作为元数据附加。
对于您描述的情况,请在消息体中使用json。

10-06 00:49