Feature Support in PubSub+ Messaging APIs
All the PubSub+ Messaging APIs support common functionality that is essential for messaging. These APIs evolve over time to meet use-case requirements for client applications, therefore there are slight differences in feature support.
The PubSub+ Messaging API for iOS is a mobile API. For the list of features supported for the iOS API, see iOS API.
Here's a summary of the current support for features; you can use this summary as a comparison to select the PubSub+ Messaging API that's right for your requirements. API- or platform-specific features are described on the individual PubSub+ Messaging API pages. The following table shows the PubSub+ Messaging API support for various features:
- A minimum event broker version where required, otherwise the feature is available in all supported event broker versions.
- A minimum API version where required, otherwise feature support for each API is indicated using the following symbols:
- —A green check with no version number beneath it indicates that the feature is available in all supported API versions.
- —A gray cross indicates that this feature is not currently supported.
- —A gray dash indicates that this feature cannot be supported due to technical limitations in the API.
Feature | C | .NET | Java RTO | JCSMP | Java | JMS | JavaScript | Node.js | Python | Go |
---|---|---|---|---|---|---|---|---|---|---|
Direct and Guaranteed Messaging Support |
|
|
|
|
|
|
|
|
|
|
Request and Reply Messaging
|
|
|
|
1.1+ |
|
|
|
|
|
|
Structured Data Types (SDTs) that Don't Rely on a Specific Architecture or Programming Language |
|
|
|
|
|
|
|
|
|
|
Logging and Customizing through Property Parameters |
|
|
|
|
|
|
|
|
|
|
Local Transactions
|
|
|
|
|
|
|
|
|
1.4+ |
|
XA Transactions |
|
|
|
|
|
|
|
|
|
|
PubSub+ Cache Client Support
|
|
|
|
|
|
|
|
|
1.6+ |
|
Durable Endpoint Provisioning |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
Use Selectors |
|
|
|
|
|
|
|
|
|
|
Message Compression Support |
|
|
|
|
|
|
|
|
|
|
Support for Proxy Server Connections (HTTP and SOCKS5) |
|
|
|
|
|
|
|
|
|
|
OAuth 2.0 Authentication event broker version 9.12+ |
7.21+ |
10.16+ |
7.21+ |
10.13+ |
1.1+ |
10.13+ |
10.9+ |
10.9+ |
1.3+ |
|
event broker version 10.1+ |
7.24+ |
10.19+ |
10.3+ |
10.16+ |
1.1+ |
|
10.10+ |
10.10+ |
1.5+ |
1.2+ |
Kerberos Authentication
|
|
|
|
|
|
|
|
|
1.2+ |
|
Distributed Tracing (Context Propagation) event broker version 10.2+ |
|
10.21+ |
|
10.17+ |
|
10.17+ |
10.15+ |
10.15+ |
1.7+ |
1.5+ |
Replay event broker version 9.9+ |
7.18+ |
10.12+ |
7.18+ |
10.11+ |
|
|
10.7+ |
10.7+ |
1.2+ |
|
Delayed Redelivery event broker version 10.3+ |
|
|
|
10.18+ |
|
10.18+ |
|
|
|
|
Topic Dispatch |
|
|
|
|
|
|
|
|
|
|
Negative Acknowledgments (NACKs) event broker version 10.2+ |
7.26+ |
10.21+ |
10.5+ |
10.17+ |
1.4+ |
|
10.15+ |
10.15+ |
|
|
|
|
|
|
|
1.2+ |
|
|
|
|
|
event broker version 10.4+ |
7.25+ |
10.20+ |
10.4+ |
10.19+ |
1.3+ |
10.19+ |
10.13+ |
10.13+ |
1.5+ |
1.3+ |
Feature | C | .NET | Java RTO | JCSMP | Java | JMS | JavaScript | Node.js | Python | Go |
For Java, Node.js, Go, Python, and JavaScript APIs, the Durable Endpoint Provisioning feature is implemented using the Missing Resource Strategy.
- For the Node.js and JavaScript APIs—On consumer start, the Missing Resource Strategy defines the action to take when an endpoint does not exist.
- For Python, Java, and Go APIs—On receiver start, the Missing Resource Strategy defines the action to take when an endpoint does not exist.
- For the JavaScript API—To provision queues or topic endpoints on the broker requires version 1.8 of the API or later.
The use of the Missing Resource Strategy also means that you cannot deprovision the endpoints.
Support for Distributed Tracing (Context Propagation)
Context propagation with PubSub+ Messaging APIs is supported by the Solace PubSub+ OpenTelemetry API Libraries. These libraries allow you to inject context into or extract context from PubSub+ event messages.
You deploy the PubSub+ OpenTelemetry API Libraries alongside the PubSub+ Messaging API for the programming language you are using to develop your application. These libraries have dependencies on the OpenTelemetry API (which must also be deployed with your application). For information about the compatibility of the PubSub+ OpenTelemetry API Libraries, PubSub+ Messaging APIs and required dependencies, see Distributed Tracing Version Compatibility.
The PubSub+ OpenTelemetry API Libraries support only W3C propagators.
For information about specific libraries and where to get them, see:
- Instrumenting Go for Distributed Tracing for the Solace PubSub+ OpenTelemetry Integration for Solace Go API.
- Instrumenting JavaScript and Node.js for Distributed Tracing for the Solace PubSub+ OpenTelemetry Integration for Solace JavaScript and Node.js APIs.
- Instrumenting JCSMP for Distributed Tracing for the Solace PubSub+ OpenTelemetry Integration for Solace JCSMP API.
- Instrumenting JMS for Distributed Tracing for the Solace PubSub+ OpenTelemetry Integration for Solace JMS API.
- Instrumenting .NET for Distributed Tracing for the Solace PubSub+ OpenTelemetry Integration for Solace .NET API.
- Instrumenting Python for Distributed Tracing for the Solace PubSub+ OpenTelemetry Integration for Solace Python API.
Support for Queue Browsing
Client applications can use the PubSub+ Messaging API to look at Guaranteed messages spooled for a queue in the order of oldest to newest without consuming them. For more information about using queue browsing for:
- C, .NET, Java RTO, Javascript, NodeJS, and JCSMP, see Browsing Guaranteed Messages.
- Java, see Browsing Queues with the Java API.
- JMS, see Browsing Messages.
Support for Partitioned Queues
Partitioned queues allow you to easily scale the number of consumer applications in your event mesh. PubSub+ event brokers ensure that all related events are delivered to the same consumer in the correct sequence and can re-balance the event stream when you add or remove consumers.
- For a general overview of partitioned queues, see Partitioned Queues.
- For details about setting the partition key, see Publishing to and Consuming from Partitioned Queues and Partitioned Queue Feature Interactions.
- For examples for using partitioned queues with JCSMP, Java RTO, C, Node.js, and Javascript in the PubSub+ Messaging APIs, see Partition Key.
- For examples for using partitioned queues with the PubSub+ Messaging API for Java, see Setting a Partition Key.
- For examples for using partitioned queues with the PubSub+ Messaging API for Go, see Setting a Partition Key.
- For examples for using partitioned queues with the PubSub+ Messaging API for Python, see Setting a Partition Key.
- For examples for using partitioned queues with PubSub+ Messaging API for JMS, see Setting Message Properties.
Support for Negative Acknowledgments
Consumer applications can send an acknowledgment (ACK) or a negative acknowledgment (NACK) based on the settlement outcome of processing a guaranteed message. Rather than send an explicit acknowledgment (ACK) (as described in Feature Support in PubSub+ Messaging APIs), you can signal (via a settle method/function) a settlement outcome to the event broker. For more information about using Nacks for:
- C, .NET, Node.js, Javascript, Java RTO, and JCSMP, see Negative Acknowledgments for Specific Messages.
- Java, see Negative Acknowledgments for Specific Messages.
Support for On-Behalf-Of Topic Subscription Managers
On-Behalf-Of subscriptions allow certain clients, called OBO subscription managers, to subscribe and unsubscribe to topics on behalf of other clients. OBO subscription managers allow your applications to use a single interface for subscription management, which simplifies how you can add and remove subscriptions for multiple clients. For more information about OBO subscription managers for:
-
JCSMP, Java RTO, C and .NET, see Managing Topic Subscriptions on Behalf of Other Clients.