Diffusion™ primarily distributes data using a pub-sub model,
where content is published to topics. These topics are arranged as a tree.
What is the topic tree?
The topic tree is the organizational structure of the Diffusion topics. A topic of any type can be created any
point in the topic tree where a topic does not already exist.
Locations in the topic tree are referred to by their topic path, which is the level
names in the tree that lead to the topic, separated by the slash character (/).
In the preceding image, topics exist at baz and qux. The topic
path for baz is /foo/baz. The topic path for qux is /foo/bar/qux
You can create a topic at /foo/bar/qux
without having to create topics at /foo
or /foo/bar beforehand.
There can be multiple topics that have the same name, but topic paths are unique.
When interacting with topics in the topic tree, your clients can reference a topic by
its topic path or by a topic selector with a
pattern expression that matches the topic path. Clients can use topic selectors to
reference sets of topics in the tree that all match the topic selector's pattern
Considerations when designing your topic tree
Does the source information have a logical organization?
If the data
structure of the source information is complex, it can be mapped to a
How many topics?
If the number of topics is small, a flat topic tree might
How do clients subscribe to the data?
If there are topics that clients
generally subscribe to together, these topics can be organized in the
same branch of the topic tree. This enables a client use a topic
selector to subscribe to the branch of the topic tree and receive
updates for all topics in that branch.
The size of your topic tree can be constrained by your hardware.
extremely large topic tree can cause long GC pauses. Ensure that you do
sufficient testing with your topic tree before going to production.
If the size of your topic tree structure is caused
by a lot of duplication, use routing topics to reduce it.
A topic cannot be bound to the / topic path. This is because each segment of a topic
path must have one or more characters. This means there can be no single
topic that acts as the root topic for all possible topics in the topic
tree. Instead each top-level topic whose path contains a single part
acts as the root topic for their branch of the topic tree.
However, the / path can be
used as a routing path when sending or receiving messages, which uses
paths but does not use any topics that are bound to them.