2015-09-22 52 views
1

我正在使用Qpid-proton python示例腳本(send.py)將數據發送到Azure事件中心。要檢查,我使用Service Bus Explorer 2.6.1.0。使用python腳本發送的數據在Service Bus Explorer中顯示爲十六進制值,而不是我發送的數據。但使用Qpid的recv.py接收相同的結果。那麼,這是一個問題嗎?通過服務總線瀏覽器接收的Azure事件數據採用十六進制格式

#!/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發送數據。在Service Bus Explorer中正確接收該示例數據。

回答

0

我試圖用qpid-proton python將消息發送到EventHub中,但失敗了。

然後我通過使用Azure Python SDK發送郵件,並通過Service Bus Explorer接收郵件,但這些事件數據未顯示爲十六進制格式。我認爲這個問題似乎是由於使用qpid-proton python在字符編碼中序列化事件數據造成的。您需要使用「UTF-8」而不是Unicode。在Python2中,UTF-8字符串在字符串前面使用前綴「u」,如u"Hello World!"

相關問題