Message Properties
A message can have some arbitrary metadata associated with it. This metadata is represented by a dictionary of key-value pairs. Here, we cover how to associate properties with messages being posted, and how to retrieve properties when consuming messages.
Posting
Message With Properties
When invoking Session.post with a message, you can provide a dict to the optional
properties parameter to associate properties with the message being posted.
BlazingMQ has particular types of property values that can be part of this
dictionary – as enumerated in PropertyType.
If you do not particularly care about which exact PropertyType is being targeted,
the types inferred by default are as follows:
Python Type |
BlazingMQ Type |
|---|---|
int |
|
bool |
|
str |
|
bytes |
Properties With Overrides
However, if you want to target a particular PropertyType, you can leverage the
property_type_overrides in Session.post. Be aware that any key included in
property_type_overrides must be present in properties. For any particular
property, if an override is missing, the default is inferred as above.
The following table describes the properties that can be set and the accepted types:
BlazingMQ Type |
Python Type |
|---|---|
int |
|
int |
|
int |
|
bytes |
|
bool |
|
str |
|
bytes |
Note
All integers being passed as values need to be in the appropriate range to not trigger an exception.
The
PropertyType.CHARtype accepts abytesobject with a single byte, i.e., bytes with a length of 1.
Consuming
If the Message received in your on_message callback installed on Session
contains any properties, it will always contain both a Message.properties and a
fully populated Message.property_types. This means that, for every property denoted
by a key in Message.properties, there will also be a corresponding key in
Message.property_types to denote the BlazingMQ type of the property received.
The Python types that you can expect will be a mirror of the second table in the section above.