我正在尝试处理来自SQS消息的消息。
我的同事正在发送json对象,该对象有一个使用java使用gzip压缩的字段。所以基本上它是gzip压缩字节流。
当我尝试直接在SQS上看到它时,该字段如下:
"Message" : "\u001F�\b\u0000\u0000\u0000\u0000\u0000\u0000\u0000mRmo�P\u0014�/M�h2�N�~1&�43?\u0019�X��R�\u001A(\u0004J�%&���\r��\u0000\u001Bn\u000B\u0010�\u0019\u0006\u0012�8d2�zo/��[.�F퇛��<�9�9缠Ԕeh1}�2��N�\u0014<.9�\u001C�;�pO�G���\u0002�yP��~�\u0013�t�_��姹:�B,-�=\u0004\r\u001A
cH \ u0010! @-Rz2 c 8 Ĉ ĈA&gt; o \t Kx;m = H \ u0006~吨\“Ҽp6,\ u0012q \ u001F%E%2C,-3wlzv7t -Uɰ\ u00109Q \ u0014 \ u00108] \ n上\ u0005TU \ u0006 \ u001ER $ \ u00128eԵ4%?\ u0007 \u0007Р\吨\ n5l-?d#\ u001EՇⅰ)] \ u0012W2V \ u0000的[伊犁\ u0017RZ't .Ko \ u0013 | \ u001F \ u0013】Z rMRdF \ u001C + _:\ u0017 \ u00132b \ u0013LU19 \ u0019 \ u0017 @〜:(CA \ u0015 \ u0019 ^ RL&安培; {R d \ u0018 NN \ u001F \ RY \ u0019M \ u0010〜Z; \ u001E @ ovq B\u0002��Q�\u0004>�G�mwo�*���\u0002M�MZ�e��M�̪\u0010\u0014S���$�7V1��ߡL�W1�y��W&{��!\u001A\u001C6��\u0003�\u001DX����\u00105�\u0000{\u0002���J�\f�
的sQ \ u0003xP6dUz \ u000BJ \ u0017i \ U0003 \ u0000的\ u0000" 的,`
我的代码:
for message in queue.receive_messages(AttributeNames=['All']):
message_dict = json.loads(message.body)
compressed = message_dict['Message']
ungziped_str = zlib.decompressobj().decompress(bytes(compressed.encode('utf-8')))
给出:
zlib.error: Error -3 while decompressing data: incorrect header check
有什么方法可以阅读它的内容吗?
顺便说一句,我已尝试过https://stackoverflow.com/a/12572031/536474但仍然出现相同的错误消息。
答案 0 :(得分:1)
Micheal -sqlbot是对的。 根据aws sqs文档: 它支持3种不同的数据类型:
它希望用户输入Base-64编码的值以发送二进制类型。