2 つの uService がメッセージ キュー (RabbitMQ) を介して通信しています。データはmessage packを使用してエンコードされます。
次のシナリオがあります。
- python3 -> python3: 正常に動作しています
- python2 -> python3: エンコーディングの問題
エンコーディングは以下で行われます:
umsgpack.packb(data)
デコード:
umsgpack.unpackb(body)
python3 でエンコードとデコードを行うと、次のようになります。
data={'sender': 'producer-big-red-tiger', 'json': '{"msg": "hi"}', 'servicename': 'echo', 'command': 'run'}
python2 でエンコードし、python3 でデコードすると、次のようになります。
data={b'command': b'run', b'json': b'{"msg": ""}', b'servicename': b'echo', b'sender': b'bla-blah'}
データが「完全に」デコードされないのはなぜですか? python2 と python3 の間の互換性を実現するには、送信側/受信側で何をすべきですか?