Topic tree
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.
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 expression.
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 hierarchical structure.
- How many topics?
If the number of topics is small, a flat topic tree might be appropriate.
- 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.
An extremely large topic tree can cause long GC pauses. Ensure that you do sufficient testing with your topic tree before going to production.
-
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.