Release Notes: PubSub+ Messaing API for Python, Version 1.9.0
Release History for PubSub+ Messaging API for Python, Version 1.9.0
October 2024

New Features Introduced in Release 1.9.0 and Earlier Releases

This section lists the new features introduced in the PubSub+ Messaing API for Python for release 1.9.0 and earlier releases.
Name Description Introduced in Version
Python - Support Alpine Linux
The Solace Python API now supports Alpine Linux, allowing developers to build and deploy applications using the API on this platform.
1.9.0
Python - Provide Ability to NACK a Specific AD Message and Force Re-Delivery
The Messaging API for Python now supports message NACK.
1.9.0
Python API - Available for ARM Linux
The Python API now supports development and deployment on platforms that use ARM processors.
1.8.0
Python - API Support To Compress Payload
The Python API now supports end-to-end payload compression. Sessions can now be optionally configured to compress the payload of every message on a message-by-message basis. While enabling this feature severely impacts API performance for small messages and significantly impacts API performance for larger messages, it has a positive impact on Event Broker performance and message-spool usage.
1.8.0
Python - Distributed Tracing - Context Propagation
Enables adding and extracting tracing metadata attached to events published and received by the Solace Python API.
1.7.0
Python - Support for Mac M1
The Python API now supports development and deployment on platforms that use MAC M-series processors.
1.7.0
Python - Update API License Agreement
We have simplified the API license text and clarified that distributing works containing the Solace APIs is allowed.
1.7.0
Python - Support PubSub+ Cache Use Cases
This enhancement adds PubSub+ Cache support in the Python API. This allows applications using the Python API to interact with PubSub+ Cache.
1.6.0
Python API - Support for Partitioned Queues
This enhancement adds support for Partitioned Queues to the API. Partitioned Queues expand PubSub+ to provide deterministic, ordered, and non-exclusive message delivery for customers to scale the number of consumers when publishing ordered datasets. The ordered datasets are keyed to ensure all events in the dataset are sent to the same consumer without mis-ordering events. This feature requires PubSub+ Event Broker support. Support for this feature is planned to be introduced to the Event Broker around April 30, 2023 in release 10.4.0.
1.5.0
Python API - Add Way to Update Oauth Token on Reconnection
This feature allows an application to automatically update the OAuth token without the need to create a new session the next time the API tries to reconnect.
1.5.0
Python - Local/Session Transaction Support
This feature adds support for Transacted Sessions in the API. This will enable client applications to group multiple message send and/or receive operations together in single, atomic units known as local transactions. Each transacted Session can support a single series of transactions.
1.4.0
Python - Handle Unsolicited Broker Termination
The API will be able to handle unsolicited service interruption for receiving or publishing situations where there are permanent or long ongoing network interruptions. The API will now handle these scenarios more gracefully by notifying the application when this occurs.
1.4.0
OAuth/OIDC Support in Python API
OAuth / OpenID Connect has been added as a method of authenticating and authorizing clients connecting to the PubSub+ Event Broker using the SMF protocol. Clients using Solace APIs will be able to present a token as a credential during client login. This enables clients to integrate with modern identity and access management systems.
1.3.0
Update Python API to Use Contemporary Python Version and Contemporary Python Tagging
Changed tagging procedure to properly package for PyPi.
1.2.1
Support for Kerberos Client Authentication
Added Kerberos as a client authentication scheme.
1.2.0
Additional Direct Receiver Back Pressure Strategies
Added "drop latest" and "drop oldest" strategies to the Direct Receiver Backpressure buffer. This gives more options for what to do with messages received when the message buffer fills.
1.2.0
Replay After Replication Group Message ID
Applications can now replay messages following the message-ID of the last message which they successfully processed. The feature uses "replication group message ID", which uniquely identifies messages within an HA group and Replication/DR group of brokers. The broker includes this ID in all guaranteed messages it delivers to the consumer. Consuming applications can extract and save this ID along with the message payload, and then use it later to initiate a replay. This is a more "fine-grained" way to start a replay than from date-and-time, and is ideal in cases where the last message-ID successfully processed is known by the application (e.g. recovery from a database crash). To initiate replay after message-ID from an application, both the PubSub+ Event Broker and PubSub+ Event API must be upgraded. The following versions introduce support for replay after message-ID: Broker: * PubSub+ Event Broker version 9.9.0 Messaging API: * PubSub+ Messaging API for Java(JCSMP) version 10.11.0 * PubSub+ Messaging API for Java version 1.0.0 * PubSub+ Messaging API for C version 7.18.0 * PubSub+ Messaging API for JavaRTO version 7.18.0 * PubSub+ Messaging API for .NET version 10.12.0 * PubSub+ Messaging API for JavaScript version 10.7.0 * PubSub+ Messaging API for Python version 1.2.0
1.2.0
Direct Messaging Request/Reply
The API now supports the request/reply messaging pattern with synchronous and asynchronous functions.
1.1.0
Structured Data Type Support for Publish and Consume
The API can now consume messages published with SDTMap and SDTStream and publish messages setting SDTMap and SDTStream.
1.1.0
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 the replication group ID will be included in a future release.
1.1.0
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.
1.1.0
Python API MVP (GA) Direct & Guaranteed Messaging
This is the initial release of the PubSub+ Messaging API for Python. Solace created this API to support the rich Python ecosystem and help developers create applications in Python that take advantage of the broad features of PubSub+. This version contains a feature set that allows for common messaging patterns like publish/subscribe using Direct Messaging and Guaranteed Messaging. This API provides support for all deployments of PubSub+ across software, appliance, and cloud. Future versions of the Python API will introduce more features as Solace builds out the roadmap for this API. The Python API 1.0.0 supports: * Connection management to PubSub+ event brokers * Addition and removal of topic subscriptions * Sending and receiving Direct and Guaranteed Messages * Message compression * Use of Selectors The Python API 1.0.0 does not support the following features: * Request/Reply message exchange pattern * Message Replay * Structured data types that allow interoperability between various architectures and programming languages * PubSub+ Cache Client API support * Session Transactions * XA Transactions * Queue browsing * Kerberos authentication
1.0.0

Issues Resolved in Release 1.9.0 and Earlier Releases

This section lists the history of resolved issues in the PubSub+ Messaing API for Python for release 1.9.0 and earlier releases.
Reference Number Description Resolved in Version
SOL-123208
PublishReceipt.message returns the wrong object. It incorrectly returns _SolaceMessage instead of OutboundMessage.
1.9.0
SOL-95434
In rare cases, Python applications that use guaranteed messaging with significant session creation may experience an increase in memory usage over time.
1.8.0
SOL-91034
When a persistent publisher terminates it may block for 10 minutes before receiving pending publisher receipts.
1.6.0
SOL-84875
When the endpoint is configured with max-delivered-unacked-msgs-per-flow less than 255, the Messaging API performance may be degraded. This is particularly noticeable when max-delivered-unacked-msgs-per-flow is 1, as acknowledgements will only be sent once per second. Workaround: Messaging API for C: set SOLCLIENT_FLOW_PROP_MAX_UNACKED_MESSAGES equal to the value configured on the endpoint. Messaging API for .NET: set FlowProperties.MaxUnackedMessages equal to the value configured on the endpoint. Messaging API for Python and Go: No workaround is available.
1.4.1
SOL-43623
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.
1.4.0
SOL-54295
After a service is disconnected, calling is_running(), is_terminating(), or is_terminated() may return the incorrect state for the Publisher or Receiver.
1.4.0
SOL-67463
The default value for PERSISTENT_DMQ_ELIGIBLE should be 'true', to be consistent with other Solace Messaging APIs.
1.4.0
SOL-77879
In rare cases, a persistent receiver may suddenly stop receiving messages. The receiver will not recover on its own and must be terminated.
1.4.0
SOL-51786
The Class of Service feature is not supported in the Solace PubSub+ Messaging API for Python.
1.3.0
SOL-50784
The Python API fails to automatically re-bind to endpoints after reconnecting.
1.2.0

Changed Functionality in Release 1.9.0 and Earlier Releases

This section lists the history of changed functionality in the PubSub+ Messaing API for Python for release 1.9.0 and earlier releases.
Reference Number Description Introduced in Version
SOL-95357
The API has been updated to decode “400 Invalid Queue or Topic Endpoint Durability” broker response. For more information, see: C API .Net API JavaRTO API Go API Python API Javascript API JCSMP API JMS API
1.9.0
SOL-91687
The C, .Net and Python APIs no longer bundles OpenSSL libraries on Linux platforms. For all other platforms, the bundled OpenSSL libraries have been updated to OpenSSL 3.0. For more information, refer to the Supported Environments page in our customer documentation.
1.8.0
SOL-81764
The Python API now requires macOS 11(Big Sur) or newer.
1.7.0
SOL-53041
Setting basic-username (via solace.messaging.authentication.scheme.basic.username) will no longer set the client username used for client-certificate authentication. Applications are now required to set client-certificate-username using solace.messaging.authentication.client-cert.username.
1.2.0

Known Issues in Release 1.9.0 and Earlier Releases

This section describes known issues in the PubSub+ Messaing API for Python for release 1.9.0 and earlier releases.
Reference Number Description
SOL-45233
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.
SOL-46210
Attempting to disconnect the messaging service while it is in connecting state will cause the Python API to ungracefully shut down.
SOL-47413
RequestReplyMessagePublisher.terminate() waits until all Future objects created by RequestReplyMessagePublisher.publish() are complete. All Future objects 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. Workaround: The application may choose to implement its own executor to call publish_await_response() for asynchronous publish. This will return a failure, as expected, on terminate.
SOL-81229
In rare cases, a transacted receiver may suddenly stop receiving messages. The transacted service will not recover and the process will need to be terminated.
SOL-43633
Messaging metrics within the Python API may be slightly out of sync (delayed) compared to the actual number of messages sent and received.
For more details, refer to the Release Notes page for the individual Solace Messaging APIs.

Supported Environments