2015-09-22 7 views
1

Я использую сценарий примера ppid-кода python (send.py) для отправки данных в концентратор событий Azure. Чтобы проверить это, я использую Service Bus Explorer 2.6.1.0. Данные, отправленные с использованием сценария python, отображаются как значения Hex в проводнике служебной шины, а не как то, что я отправляю. Но получение того же самого с помощью recv.py от Qpid дает ожидаемый результат. Итак, это проблема?Данные Azure Event, полученные через Service Bus Explorer, находятся в шестнадцатеричном формате

#!/usr/bin/python 
# 
# Licensed to the Apache Software Foundation (ASF) under one 
# or more contributor license agreements. See the NOTICE file 
# distributed with this work for additional information 
# regarding copyright ownership. The ASF licenses this file 
# to you under the Apache License, Version 2.0 (the 
# "License"); you may not use this file except in compliance 
# with the License. You may obtain a copy of the License at 
# 
# http://www.apache.org/licenses/LICENSE-2.0 
# 
# Unless required by applicable law or agreed to in writing, 
# software distributed under the License is distributed on an 
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
# KIND, either express or implied. See the License for the 
# specific language governing permissions and limitations 
# under the License. 
# 
from __future__ import print_function 
import sys, optparse 
from proton import * 

parser = optparse.OptionParser(usage="usage: %prog [options] <msg_1> ... <msg_n>", 
           description="simple message sender") 
parser.add_option("-a", "--address", default="amqp://0.0.0.0", 
        help="address: //<domain>[/<name>] (default %default)") 

opts, args = parser.parse_args() 
if not args: 
    args = ["Hello World!"] 

mng = Messenger() 
mng.start() 

msg = Message() 
for m in args: 
    msg.address = opts.address 
    msg.body = unicode(m) 
    mng.put(msg) 

mng.send() 
print("sent:", ", ".join(args)) 

mng.stop() 

Отправить синтаксис: $ питон send.py -a [адрес] "Привет мир"

Я также попытался отправки данных с помощью Azure SDK питона. Эти примерные данные получены правильно в проводнике служебной шины.

ответ

0

Я попытался воспроизвести эту проблему, используя qpid-proton python для отправки сообщений в EventHub, но не удалось.

Затем я отправил сообщения с использованием Azure Python SDK и получил их через Service Bus Explorer, но эти данные событий не были показаны в виде шестнадцатеричного формата. Я думаю, что проблема, похоже, вызвана использованием qpid-proton python для сериализации данных событий в кодировании символов. Вам нужно использовать «UTF-8» вместо Unicode. В Python2 строка UTF-8 использовала префикс 'u' в начале строки, такой как u"Hello World!".