2017-02-13 4 views
0

現在、カスタムシステムからpython Stomp.pyライブラリを経由してメッセージをActiveMQインスタンスにプッシュしています。これは、sendコマンドの "headers"パラメータとしてカスタムヘッダーを辞書に提供すると失敗します。カスタムヘッダーでStomp.pyを送信できない

ValueError: dictionary update sequence element #0 has length 1; 2 is required 
スタックトレースの

最後の部分は:

File "/custom_addons/activemq_message.py", line 124, in send_to_queue 
conn.send(destination, self.body, headers=self.header) 

File "/usr/local/lib/python2.7/dist-packages/stomp/protocol.py", line 151, in send 
headers = utils.merge_headers([headers, keyword_headers]) 

File "/usr/local/lib/python2.7/dist-packages/stomp/utils.py", line 166, in merge_headers 
headers.update(header_map) 

これは私が実際にかかわらず、whereterのかそうでない何らかの理由

destination = self.subscription_id.queue_name 
# Connect to the server 
conn.connect(username=$username, 
      password=$password, 
      headers={}) 
# Send the actual message out 
conn.send(destination, self.body, headers=self.header) 
conn.disconnect() 

は、ヘッダはこのエラーを私に提供する失敗します辞書に何かを提供するか、空のものを送り出すだけです。

また、私は接続レベルでヘッダーを提供したり、(またはその両方を)送信することはできません。

ある時点でヘッダーを文字列に変換しているように見えますが、これが意図的であるかどうかはわかりません。これを解決する方法も見つけられません。

すべての手がかりをいただければ幸いです。

答えて

0

コードの他の部分では、ヘッダーが原因で文字列フィールドに格納されていました。その後、辞書の代わりにユニコードを送信しようとします。

ソースを編集できなかったので、 "ast"モジュールのメソッド "literal_eval"を使用してユニコードを辞書に変換して使用しました。

関連する問題