2012-02-14 2 views
0

Я пытаюсь получать сообщения от amqp broker в python. Вот мой код:python qpid message encoding

#!/usr/bin/python 

import sys 
import os 
import getopt 
from qpid.messaging import * 
from qpid.log import enable, DEBUG 

broker_rcv = "admin/[email protected]:IP" 
address_rcv = "broadcast.QUEUE_NAME.QUEUE_NAME" + "; { node: { type: queue }, assert: never , create: never, mode: " + "browse" + " }" 

connection_rcv = Connection(broker_rcv) 
connection_rcv.open() 
session_rcv = connection_rcv.session() 
receiver = session_rcv.receiver(address_rcv) 

msg = receiver.fetch(timeout=None) 
print msg.content 

Но когда я пытаюсь напечатать сообщения, которые я вижу их в странной кодировке, и нет никакого способа, как изменить кодировку сообщений.

Что я делаю неправильно?

+0

сообщение некоторые странно закодированных строк. – Blender

+0

AEDEXCHAED "AEDN0: ОАЭ дирхам @HR EURAED XLA H ANGEXCHANG" ANGN0: НИДЕРЛАНДЫ @HR EURANG XLA H AUDEXCHAUD "AUDN0: AUSTRAL ДОЛЛАР @ HR EURAUD XLA H AZNEXCHAZN" AZNN0: АЗЕРБАЙДЖАН @HR – user1209304

+0

Если я удалю печать и оставил только сообщение msg.content, я получаю следующее сообщение: \ n2 \ xa2 \ x06/\ n \ x0520001 \ x12 \ nEUREX 14.0 \ x1a \ x05EUREX \ x01 * \ x07 \ x08 \ xcd \ x0f \ x10 \ x0b \ x18 \ x0c0 \ x00: \ x06 \ x08 \ x0e \ x10 \ x13 \ x18 \ x0e \ x12L \ x8a \ xe2 \ tH \ n \ x03AED \ x12 \ x04EXCH \ x1a \ x03AED "\ – user1209304

ответ

0

msg.content содержит исходное содержимое сообщения, отправленное некоторым производителем. Вы не можете его изменить. И какова кодировка, которую вы указали выше? Если вы заметили, что при печати msg просто игнорируйте его.

0

Что вы делаете неправильно, так это то, что вы не можете декодировать сообщения. Когда вы получаете закодированное сообщение, вы должны начать с его декодирования.

Эти сообщения FIX? Все технические характеристики здесь http://fixprotocol.org/specifications/

Одна библиотека Python здесь http://source.kentyde.com/fixlib

+0

Мое сообщение находится в google protobuf. Мне удалось декодировать его с помощью декодера. – user1209304