What is the content type set to? Or is it set? -> The content type type is not
set at all.Do you know the encoding in which the body is being sent? -> Not
really, base64?This is over an AMQP 1.0 connection, is that right? -> No, it's
AMQP 0-10.
I enabled trace+:Protocol logging and captured the log while browsing a test
message. For this specific test I used a Python client based on qpidmessaging
for Python because it's easier to inspect the message than using C++ (at least
for me).
Broker log:
2019-08-13 19:29:31 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: INIT(0-10)2019-08-13 19:29:31
[Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {ConnectionStartBody:
server-properties={host:V2:10:str16(NYOGSERVER),platform:V2:17:str16(Microsoft
Windows),product:V2:8:str16(qpid-cpp),qpid.federation_tag:V2:36:str16(3291b203-4be6-45bd-a93f-60442501ce62),version:V2:4:str16(0.34)};
mechanisms=str16{V2:9:str16(ANONYMOUS), V2:5:str16(PLAIN)};
locales=str16{V2:5:str16(en_US)}; }]2019-08-13 19:29:31 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{ConnectionStartOkBody:
client-properties={platform:V2:2:str16(nt),product:V2:18:str16(qpid python
client),qpid.client_pid:F8:int64(224),qpid.client_ppid:F8:int64(0),qpid.client_process:V2:9:str16(qpidog.py),qpid.client_version:V2:15:str16(1.38.0-SNAPSHOT)};
mechanism=ANONYMOUS; response=xxxxxx; }]2019-08-13 19:29:31 [Protocol] trace
SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{ConnectionTuneBody: channel-max=65534; max-frame-size=16384; heartbeat-min=0;
heartbeat-max=0; }]2019-08-13 19:29:31 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{ConnectionTuneOkBody: channel-max=65534; }]2019-08-13 19:29:31 [Protocol]
trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {ConnectionOpenBody: }]2019-08-13 19:29:31 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{ConnectionOpenOkBody: known-hosts=str16{}; }]2019-08-13 19:29:31 [Protocol]
trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {SessionAttachBody: name=258b32ce-4ceb-4dae-8a89-abb00d19ba77:0;
}]2019-08-13 19:29:31 [Protocol] debug Attached channel 0 to
anonymous.258b32ce-4ceb-4dae-8a89-abb00d19ba77:02019-08-13 19:29:31 [Protocol]
trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {SessionCommandPointBody: command-id=0; command-offset=0;
}]2019-08-13 19:29:31 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{ExchangeQueryBody: name=qmf.default.topic; }]2019-08-13 19:29:31 [Protocol]
trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {SessionAttachedBody: name=258b32ce-4ceb-4dae-8a89-abb00d19ba77:0;
}]2019-08-13 19:29:31 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{SessionCommandPointBody: command-id=0; command-offset=0; }]2019-08-13 19:29:31
[Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {ExecutionResultBody: command-id=0; value=\x07\x01
\x00\x10management-topic\x00\x00\x00\x1A\x00\x00\x00\x01\x0Eqpid.replicate\x95\x00\x04none;
}]2019-08-13 19:29:31 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{SessionCompletedBody: commands={ [0,0] }; }]2019-08-13 19:29:31 [Protocol]
trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {QueueDeclareBody: queue=258b32ce-4ceb-4dae-8a89-abb00d19ba77:0.0;
exclusive=1; auto-delete=1; }]2019-08-13 19:29:31 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{ExchangeBindBody: queue=258b32ce-4ceb-4dae-8a89-abb00d19ba77:0.0;
exchange=qmf.default.topic;
binding-key=direct.706eb83b-3b5f-47f4-848f-61e82085ecb6; }]2019-08-13 19:29:31
[Protocol] trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {MessageSubscribeBody:
queue=258b32ce-4ceb-4dae-8a89-abb00d19ba77:0.0; destination=0; accept-mode=1;
acquire-mode=0; }]2019-08-13 19:29:31 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{MessageSetFlowModeBody: destination=0; flow-mode=0; }]2019-08-13 19:29:31
[Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {SessionCompletedBody: commands={ [0,4] }; }]2019-08-13
19:29:31 [Protocol] trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {MessageFlowBody: destination=0; unit=1;
value=4294967295; }]2019-08-13 19:29:31 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{MessageFlowBody: destination=0; unit=0; value=10; }]2019-08-13 19:29:31
[Protocol] trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {ExchangeQueryBody: name=qmf.default.direct;
}]2019-08-13 19:29:31 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{QueueQueryBody: queue=qmf.default.direct; }]2019-08-13 19:29:31 [Protocol]
trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {ExecutionResultBody: command-id=7; value=\x07\x01
\x00\x11management-direct\x00\x00\x00\x1A\x00\x00\x00\x01\x0Eqpid.replicate\x95\x00\x04none;
}]2019-08-13 19:29:31 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{SessionCompletedBody: commands={ [0,7] }; }]2019-08-13 19:29:31 [Protocol]
trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {ExecutionResultBody: command-id=8; value=\x08\x01\x00\x00;
}]2019-08-13 19:29:31 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{SessionCompletedBody: commands={ [0,8] }; }]2019-08-13 19:30:17 [Protocol]
trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {QueueQueryBody:
queue=lnl.og.replicator-credential-transaction.processqueue_2; }]2019-08-13
19:30:17 [Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {ExecutionResultBody: command-id=9;
value=\x08\x01\xE7\x007lnl.og.replicator-credential-transaction.processqueue_2\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00;
}]2019-08-13 19:30:17 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{SessionCompletedBody: commands={ [0,9] }; }]2019-08-13 19:30:17 [Protocol]
trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {MessageSubscribeBody:
queue=lnl.og.replicator-credential-transaction.processqueue_2; destination=1;
accept-mode=0; acquire-mode=1; }]2019-08-13 19:30:17 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{MessageSetFlowModeBody: destination=1; flow-mode=0; }]2019-08-13 19:30:17
[Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {SessionCompletedBody: commands={ [0,11] }; }]2019-08-13
19:30:17 [Protocol] trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {MessageFlowBody: destination=1; unit=1;
value=4294967295; }]2019-08-13 19:30:17 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{MessageFlowBody: destination=1; unit=0; value=1; }]2019-08-13 19:30:17
[Protocol] trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {ExecutionSyncBody: }]2019-08-13 19:30:17 [Protocol]
trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {MessageFlushBody: destination=1; }]2019-08-13 19:30:17 [Protocol]
trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe;
channel=0; {SessionCompletedBody: commands={ [0,14] }; }]2019-08-13 19:30:17
[Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[Bbe;
channel=0; {MessageTransferBody: destination=1; accept-mode=0; acquire-mode=1;
}]2019-08-13 19:30:17 [Protocol] trace SENT
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[be; channel=0; header (123
bytes); properties={{MessageProperties:
message-id=92606c48-ddc5-4148-917d-6ce01a57ec59; application-headers={};
}{DeliveryProperties: delivery-mode=2; exchange=lnl.og.replicator.processor_2;
routing-key=lnl-og-replicator-credentialtransaction-publisher_2; }}]2019-08-13
19:30:17 [Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[Ebe; channel=0; content (799 bytes)
\x00\x00\x03\x1B\x00\x00\x00\x02\x1Dtransaction_serialized_...]2019-08-13
19:30:17 [Protocol] trace SENT [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {SessionCompletedBody: commands={ [0,15] }; }]2019-08-13
19:30:17 [Protocol] trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {MessageFlowBody: destination=1; unit=1;
value=4294967295; }]2019-08-13 19:30:17 [Protocol] trace RECV
[qpid.192.168.56.3:5672-192.168.56.254:60069]: Frame[BEbe; channel=0;
{MessageFlowBody: destination=1; unit=0; value=1; }]2019-08-13 19:30:17
[Protocol] trace RECV [qpid.192.168.56.3:5672-192.168.56.254:60069]:
Frame[BEbe; channel=0; {ExecutionSyncBody: }]...
Message as received by client. I display the content as raw bytes:
{
"content":
"'\\x00\\x00\\x03\\x1b\\x00\\x00\\x00\\x02\\x1dtransaction_serialized_buffer\\xa0\\x00\\x00\\x02\\xc6\\x1f\\x8b\\x08\\x00\\x00\\x00\\x00\\x00\\x04\\x00\\xa5\\x96mo\\xda0\\x10\\xc7\\xbf\\x8b\\xf76\\xa0P([y\\x17b\\x97Z\\rI\\x96\\x98\\xeeIU\\xe4\\x12\\x8ff5q\\xe68\\xd5P\\xd5\\xef>\\x1b\\x10\\x84-t\\x8c\\x887\\xd8w\\xfe\\xf9\\x7f>\\xfbr/
I\\xd4\\xaa``\\x04\\\\*\\xd3G\\xc1S&]\\xc9R\\x96\\xab\\x8cr\"i^\\xd2\\xb9\\xcaD>z\\xe7\\xe5\\xbc\\x1bL\\xba\\x11+x6\\xa7J\\xc8\\xae+\\x96K\\x91w\\x1b\\xfd\\x89\\xa6\\x96\\xc0\\x02\\xb5\\xa9XTr\\xae\\xb7\\xea\\x1d\\xcc\\x12*\\x17L\\x81\\xd1\\xc5\\xa1\\xaf\\xa2\\xaa*\\xc1\\xc8>\\x98\\x85TQ0\\xfa\\xf6\\x02\\x08}\\xe0F4\\x9a\\x86z\\x0f\\x94+\\x99\\xe9\\xdd\\x8ce\\xe7r\\xcbV`\\xf4\\x02\\\\\\xc1\\xabe\\xae]14j\\xd6\\xb1^Y\\x00\\x97\\xe1-\\x18)Y\\xb1W\\x0b\\xdcQ^\\x19Z\\xcf\\xb6\\xfb6x\\xb5\\xfe^\\x1c\\xa3\\xc9\\x14\\xf9\\xa4\\x89\\xf1\\x9d\\xf2\\xb2\\x0e\\xe9\\xf4\\x1a\\tS\\x0c}g\\x8av\\xeb{\\xbdc\\x80\\x08\\x85^\\xe2\\xcf<\\xaf\\x91s\\x8d\\xa3\\x98\\x9cHB\\x9cgB5b<\\xe7dJ\\xacX\\x91\\xd3\\xa7\\xe6s\\x89\\xfd\\xe0\\x04\\xc4`x\\xd9\\xbf\\x1c6\\x0b\\xf1\\xbd\\x04\\x8e[\\x1c\\xac\\x13\\xc7\\x88$\\x93(\\x98\\x85\\xa7P\\x9a\\xf3\\xebx^\\xf0\\t\\xc1;\\x1cc\\x12D\\xf1\\x0e\\xf3\\xe1\\x18\\xa6Y\\xcbv\\xfd\\xbf\\x977\\xab0Iqo\\x1c\\x7f\\x82\\xf6\\x81\\x0c\\x8e*\\xe8_\\xd8W\\xef\\x87\\x83A\\x7fh\\xdb\\xcd\\xbc\\xc9\\xcc\\x89\\xe0Ib\\xee\\xf5\\xcf\\xda?\\xab\\x19\\xbc\\xfe\\x8f\\x97\\xe5@\\x18\\xf5Z_\\xecV\\xef\\x13\\xa2\\x90\\x9c\\x9b{\\xf4\\x99\\xb4\\x16\\x0f\\xb1I}\\xe0\\x9f\\xab!\\x08o\\x02\\xbf}q
\\x98x\\xe8\\\\\\r^\\xe0:\\xa4E\\x0c\\xd7^P\\xbb\\xfa\\xe7\\x860\\x9ea\\x0fb\\x7fr\\xae\\x8a\\x988\\xa4\\xfdA\\x8ea\\x9dr\\xf4\\r\\xbe\\r\\xf9\\x8a\\xc3\\xd6B\\\\L\\xbe\\xb4\\x86\\xa0\\xa9\\x83\\xbd\\xd6\\x943\\xae\\xe8\\x1fee[\\x1e\\x13]^\\x0ej\\xcb\\x81\\x93.<\\xc9\\xf6s\\x9bx\\xd8\\xbf}\\xdb\\x13\\xa2;\\xec\\xa2&\\xc7{\\x0bD\\xac,D\\x9e\\x12\\x01\\x19\\xcf\\x9e\\x99\\\\\\xc5L\\xa9,_\\x94&.\\xa7RBw.T1\\xf4k\\xfeH\\xf3\\x05\\xdb\\xd4\\x1b\\x0b@Vj/j\\x1a\\x0e\\x9f.\\xcdN\\\\\\xb7>b\\xd1\\x95\\xfb\\xd6G\\xb2\\xb2\\xe2*1e\\xaf\\xe6\\xbe9\\x1a\\xa0D\\x91\\xcd\\xb5\\xe5c\\xc5*v\\x0c\\xd1\\x99\\xef\\xda\\xa6\\x8e\\xda\\xb78[\\xf2O\\xb3t\\x8d\\x8fDe4\\xaf\\xb3a(\\x1d\\xb1\\xe84Rj\\x90\\xce\\x06\\xd2)\\xaa\\x07\\x9e\\x95\\x8fL&\\xe6{U\\xef\\xa4p\\xaa;\\xae\\xfe\\x85~\\\\\\xc1\\xc3\\x0f6Wf\\xbc.\\xaf\\x87\\xbd\\xd9&\\xd5\\xda\\xa9`\\xb2\\x16a\\xdf\\x02c\\x9a.X(\\xb3%\\x95\\xab\\xb56{;\\xa7\\xeb\\xb8\\xf9\\x8f\\xcb\\xb2b\\xaeH\\xd9z\\x14\\xf0\\xb4n\\xd4\\xc3C\\xfb\\xda\\xf8\\xc4V\\xae(V\\x1e{f\\xdc\\xb4~\\xaf\\xbf\\x01\\x9c\\xa9\\xe0^\\x9e\\n\\x00\\x00\\x14business_event_class\\x95\\x00\\x16Credential
Transaction'", "content_type": null, "correlation_id": null,
"durable": true, "id": "92606c48-ddc5-4148-917d-6ce01a57ec59",
"priority": null, "properties": { "x-amqp-0-10.routing-key":
"lnl-og-replicator-credentialtransaction-publisher_2" }, "redelivered":
false, "reply_to": null, "subject": null, "ttl": null,
"user_id": null}
Message content encoded to b64:
AAADGwAAAAIddHJhbnNhY3Rpb25fc2VyaWFsaXplZF9idWZmZXKgAAACxh+LCAAAAAAABACllm1v2jAQx7+L9zagUChbeRdil1oNSZaY7klV5BKPZjVx5jjVUNXvPhsQhC10jIg32Hf++X8++3IvIEnUqmBgBFwq00fBUyZdyVKWq4xyImle0rnKRD565+W8G0y6ESt4NqdKyK4rlkuRdxv9iaaWwAK1qVhUcq636h3MEioXTIHRxaGvoqoqwcg+mIVUUTD69gIIfeBGNJqGeg+UK5np3Yxl53LLVmD0AlzBq2WuXTE0ataxXlkAl+EtGClZsVcL3FFeGVrPtvs2eLX+XhyjyRT5pInxnfKyDun0GglTDH1ninbre71jgAiFXuLPPK+Rc42jmJxIQpxnQjViPOdkSqxYkdOn5nOJ/eAExGB42b8cNgvxvQSOWxysE8eIJJMomIWnUJrz63he8AnBOxxjEkTxDvPhGKZZy3b9v5c3qzBJcW8cf4L2gQyOKuhf2Ffvh4NBf2jbzbzJzIngSWLu9c/aP6sZvP6Pl+VAGPVaX+xW7xOikJybe/SZtBYPsUl94J+rIQhvAr99cSCYeOhcDV7gOqRFDNdeULv654YwnmEPYn9yroqYOKT9QY5hnXL0Db4N+YrD1kJcTL60hqCpg73WlDOu6B9lZVseE11eDmrLgZMuPMn2c5t42L992xOiO+yiJsd7C0SsLESeEgEZz56ZXMVMqSxflCYup1JCdy5UMfRr/kjzBdvUGwtAVmovahoOny7NTly3PmLRlfvWR7Ky4ioxZa/mvjkaoESRzbXlY8UqdgzRme/apo7atzhb8k+zdI2PRGU0r7NhKB2x6DRSapDOBtIpqgeelY9MJuZ7Ve+kcKo7rv6FflzBww82V2a8Lq+Hvdkm1dqpYLIWYd8CY5ouWCizJZWrtTZ7O6fruPmPy7JirkjZehTwtG7Uw0P72vjEVq4oVh57Zty0fq+/AZyp4F6eCgAAFGJ1c2luZXNzX2V2ZW50X2NsYXNzlQAWQ3JlZGVudGlhbCBUcmFuc2FjdGlvbg==
(I'm considering taking a close look at Proton once I'm done with this content
type investigation).
On Tuesday, August 13, 2019, 04:19:54 AM EDT, Gordon Sim <[email protected]>
wrote:
On 13/08/2019 1:31 am, Michael wrote:
> Thank you for pointing me in the right direction. I ended up dragging
> qpidmessaging.lib and qpidtypes.lib from the RelWithDebInfo directory into
> the project in VS and that did the trick.
>
> Just a marginal question: Now I can use
> qpid::messaging::Message::getContentObject() but it's still printed as bytes
> in ASCII. Does that mean that the message cannot be represented as a map or
> list? (I'm inspecting messages sent from a third party that appear to be C++
> maps).
If they were AMQP encoded I would expect them to be decoded into a
Variant::Map for which there is an output operator (<<) defined.
What is the content type set to? Or is it set? Do you know the encoding
in which the body is being sent? This is over an AMQP 1.0 connection, is
that right?
If you run a simple receiver with QPID_LOG_ENABLE=trace+:Protocol, then
it will log details of the frames received and we may be able to deduce
the format (or at least rule some out) from that.
(BTW on an unrelated point, have you also considered the proton c++
client? It is a different style, being entirely event driven, but it
would be worth at least a look if you are at the proof of concept stage).
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]