The latest version of Diffusion™ contains new features,
performance enhancements and bug fixes.
Partial updates for JSON topics
A new API across every client enables you to provide a partial update to a JSON topic using the powerful JSON Patch standard.
This means that the updating client does not need to provide the full value. For example, you can specify an update to the value of a single key/value pair,
without any knowledge of the rest of the JSON data.
As well as simply updating a single value, the JSON Patch standard supports adding, removing, moving, and copying key/value pairs. You can
even test values and only apply the update if the value is as expected.
When updating a large JSON topic, applying a partial update can be significantly faster than a normal update.
For more details, see Updating topics.
Topic delivery priority
You can now set the delivery priority for topics. If some of your topics contain especially time-sensitive data, you
can use this feature to minimise the latency for those topics in conditions where there is a backlog of queued updates.
For example, if your application is generating a large number of updates, or when network connectivity is slow or intermittent,
the server will prioritise delivery of updates to higher priority topics.
Priority is set using a new PRIORITY topic property which can be high,
default or low.
Topic subscription and unsubscription notifications are also delivered according to the topic priority.
For more details, see Topic delivery priority.
New compression options
The COMPRESSION topic property controls the level of compression applied to topic data. In previous versions, compression was either on or off, but
in 6.4 you can set a compression level, so you can choose the balance of data compression versus CPU cost that is right for your application.
The available values are now:
For more details, see Properties of topics.
Topic view expansion
Topic views, introduced in Diffusion 6.3, enable you to dynamically map one part of the topic tree to another.
Topic views could simply mirror one part of the topic tree in another path, or apply transformations, but the available topic mappings were always one-to-one.
Diffusion 6.4 introduces a new topic view expansion feature. Using a new expand directive,
you can use the contents of an array or object within a JSON topic to dynamically create multiple reference topics.
The feature supports multiple nested expand directives, enabling you to unpack complex JSON values into topics
that contain only the data required by subscribing clients.
Another improvement to topic views in this version is that the existing topic view value mapping clause now supports JSON time series topics.
See Topic views for full details.
Clusters, replication and fan-out enhancements
Multiple improvements have been made to the use of Diffusion in cluster and fan-out configurations.
Authentication handlers and missing topic handlers are now cluster-aware, meaning you no longer need to connect a handler to each server in a cluster.
To avoid issues with load balancers when starting up fan-out servers, you can add a fan-out readiness start condition to a server's
connection configuration. This prevents the connection from starting until a fan-out link has synchronized.
Automatic topic removal now takes into account sessions and subscribers at secondary fan-out servers.
Improved administration features
The Diffusion server can now be installed by running a single unified installer, without the need to download a separate JAR file.
The installation process has been streamlined to require fewer settings.
Product version and licence information are now published via Prometheus, and Log4j is now the default logging system.
We continue to improve the Diffusion web console. The interface for viewing topics has been redesigned,
and the performance of the console when viewing large topic trees has been improved.
Creating topic views from the console is now easier thanks to a new topic view creation wizard.
Support for OpenJDK and Java™ 11
Both the Diffusion server and the Java client now support Java 11 as well as Java 8.
You can use any HotSpot™-based Java Virtual Machine (JVM) that is compliant with the Java Technical Compatibility Kit
or is an official AdoptOpenJDK implementation.
This means you have a wide choice of supported JDKs, including Adopt OpenJDK, Amazon Corretto, Red Hat OpenJDK and Azul Zulu.
JRE packages are now supported as well as the full JDK environment, although we recommend using a full JDK due to the better diagnostic tools.
For more details, see System requirements for the Diffusion server.
Client and API improvements
- You can now
set the maximum topic path depth of a fetch request. This can be useful for performance reasons if your application has
topic tree branches with very long paths.
- The Diffusion Android client now supports Android API 29.
- The Apple client now supports compression.
- The Java client now supports the Server Name Indication extension to SSL/TLS.
Deprecations and removals
Publishers are an older, server-side way to create and update topics. Using client methods has long been preferred
over publishers, and publishers are now officially deprecated.
Slave topics are now deprecated. Topic views provide a more powerful way to mirror topics from one part of the topic tree to another.
The server edition of the JMS Adapter has been removed.
The Diffusion Publisher and JMX Adapter have been removed.