|Direct Messaging Request/Reply|
The API now supports synchronous request/reply with helper classes to await response from a replier.
|Structured Data Type Support for Publish and Consume|
API can now consume messages published with SDTMap and SDTStream and publish messages setting SDTMap and SDTStream.
|Message Replay Support|
The replay of messages from the replay log is now possible via the API. This is for temporal replay only. Replay from replication group ID will be included in a future release.
|Message Interoperability with other Solace Message Format (SMF) APIs Containing XMLContent|
Messages published with other Solace APIs populating XMLContent are now consumable by this API.
A large number of overlapping subscriptions in a single messaging service with a high rate of incoming matching messages from the broker may result in degraded performance.
Attempting to canonicalize very large messages on non-linux platforms (1MB+) via print or other means that invoke __str__() may not complete. When this occurs, the MessagingService will become unresponsive.
Messaging metrics within the Python API may be slightly out of sync (delayed) compared to the actual number of messages sent and received.
Attempting to disconnect the messaging service while it is in connecting state will cause the Python API to ungracefully shutdown.
RequestReplyMessagePublisher.terminate() waits until all Future created by RequestReplyMessagePublisher.publish() are complete. All Future created and returned by RequestReplyMessagePublisher.publish() must be completed before terminate() can finish. Even if terminate has a shorter or zero time, it will block until the outstanding futures are complete after the time has elapsed.
Application may choose to implement their own executor to call publish_await_response() for asynchronous publish. This will return a failure as expected on terminate.