Sunburst Topic Explorer Docs

title scan banner image

Hello, and thank you for trying out my tool. This page is meant to give you a quick "getting started" guide to using the Sunburst explorer.

First things first: the entire Sunburst tool runs within your browser, it is all client-side JavaScript, there is nothing to download or install. This website just hosts the HTML and JavaScript files. It's your browser that makes the client connection to the broker, not the webserver. If you can access the broker's PubSub+ Manager GUI, and use the "Try Me!" WebSocket test app, then the Sunburst Explorer will work. This tool does NOT store, save, transmit, or even look at any of the message data, payload, or metadata (besides the topic, and Publisher ID eventually), analyze it, send to Solace, or do anything with it. When your browser's WebSocket connection receives a message, the tool simply grabs the topic, the size of the payload, discards the message, and stores the metrics inside a generated topic tree data structure. That's it. It stays in your browser. Any "cookie" related popups you see is just because it's hosted on our website, and we're just tracking how many page visits we get.

Contents

No time to read? AI-generated Executive Summary

Introduction

topic example image

Topics in Solace are not static, broker-configured logs like they are in Kafka: they are ephemeral metadata, attached to each message at publish-time by the publishing application. Solace topics are hierarchical, multi-level strings that can be very descriptive and generally represent the contents of the payload contained within the message. As such, each published topic could be unique, depending on the format of the topic structure and variables. A well-described topic taxonomy is instrumental in providing efficient routing and filtering across your Event Mesh; this is because the broker routes using topics, and does not do content routing which involves looking at the contents of the message payload.

Solace brokers expose many statistics and metrics via the SEMP management API (e.g. broker rates, Message VPN byte counters, client rates, queue depths), but does not include topic-level metrics. This is because there are practically an infinite[*] number of topics. In order to determine: "what are my busy topics?", or: "do I have any weird topics?", a subscriber application must be attached that listens to everything (e.g. > in Solace). From there, the tool splits the topics by level /, and constructs a tree representation with metrics stored at the leaves.

This graphical explorer was conceived as a cool way to visualize your real-time topic taxonomy, allowing you to "walk" around your topic structure, and visually detect interesting patterns based on: # of messages, size of payloads, variances in topic tree depth, etc. This has been a years-long project, but I think it's pretty neat and useful, I hope you do too. This version was almost a complete rewrite of the one that was embedded in the Solace Event Portal v1; a list of updated/new and upcoming features is at the bottom of this page, if you wish to check that out.

Connecting

Connect wizard image

When the tool first loads, the connection panel in the top-right is open for you to connect via WebSockets to any Solace broker. Make sure you are using the correct Web Messaging port to connect: usually 8008 or 1443 for software brokers, and 80 or 443 for Solace Cloud and appliances.

For now, only basic authentication is available. Future versions might include alternative auth mechanisms (e.g. certs, OAuth), but will most likely be done via an "offline" Java JCSMP console sniffer app.

You may either modify / cut-and-paste the entire connection URL into the "URL" field, including transport (ws:// or wss://) and port; or update the host, port, and whether TLS will be used separately. Ensure the Message VPN name is correct, as well as using a client username that has the proper ACLs for connecting and subscribing to your desired topics.

By default, the tool will subscribe to two wildcarded topics: #noexport/> and #noexport/#P2P/>. The #noexport/ prefix means that these subscriptions will not be advertised across a DMR/MNR mesh, to not inadvertently start pulling tons of messages across the mesh. If you wish to subscribe to topics from other brokers, remove the #noexport/… but watch your links and WAN utilization!

The first subscription > is generally called a "catch-all" and is for regular topics; the second #P2P/> will additionally pick up other messages that the catch-all doesn't; specifically: messages published directly to queues, and default reply-to messages. Feel free to update the topic(s) you want to subscribe to.

Note that this application only subscribes using Direct messaging: there are no queues or endpoints created. Messages that are published as Persistent/Guaranteed will still be received and are demoted to Direct for the tool; even Guaranteed messages that are NACKed by the broker will still be received by the scanner due to this. However, because it uses Direct messaging, there is a chance for the tool to discard messages under a sustained high rate from the broker: this tool might not capture everything. I will eventually add a discard notification indicator.

Click the "Connect to Broker" button to start the connection process. The 🟥 red/disconnected bar at the top of the screen will turn 🔶 orange to indicate it is trying to connect, and will finally turn 🔵 blue if the connection was successful. The connection panel should also close.

Scanning

Export Clear Play/Pause Refresh butons image

When the tool connects, it is paused as indicated by the 🔵 blue status bar at the top of the screen. To start the scan, click the "play" button to add the subscriptions and start to receive data; the status bar will animate 💚 green.

By default, the display will auto-refresh every ~3 seconds if new messages have been received, and the graph should update itself, adding in new topics and moving topics around as dictated by the sort option. If you do not want the display to change while you are looking at the topics, either toggle off the "Auto" checkbox to perform manual graph refreshes (but new messages will continue to arrive), or click the "pause" button to unsubscribe the tool (not disconnect) to stop receiving new messages.

Example scan image

The red "X" button is to clear all received message and topic data, to reset the graph. If you are currently scanning, the tool will pause itself.

The export/save button with the "down arrow" will allow you to download either a JSON file or a TSV (tab-separated values) file of all the topics you've received, including message and byte counts. In the future it could also include Publisher ID information if enabled. This will be downloaded to your system's default Downloads location.

Real-time counters

While a real-time scan is running (subscribed, unpaused), the stats displayed here will be continuously updated. They show:

Topics and Metrics

As you mouse around the graph, the topic and metrics in the upper-left will update depending on the topic level you're over.

metrics image

If either of these topics (or arc names) ends with an ellipsis (three dots), it means one of two things:

In the case where a topic level name is very long, and is a rollup, you might see a label that looks like: superlongtop.../...

Metrics

The table of numbers below the topics shows various metrics related to the graph and currently highlighted topic. Note that the totals are only updated during a Refresh.

Columns

Rows

Display Options

display options image

Below the real-time buttons will be a number of widgets to allow you modify how the graph and topic data is displayed.

sort by image

You can change the direction of the sort as well, to sort fewest # of messages first, Z-A if alphabetical, etc.

Mouse Navigation Controls

{
  "topic": "acmeCoffeeShop/orderManagement/order/PENDING/v1/1607",
  "numMsgs": 1,
  "numBytes": 292,
  "lastArrivalMs": 1745469559095,
  "lastArrival": "Thu Apr 24 2025 00:39:19 GMT-0400 (Eastern Daylight Time)"
}

Oh, and Ctrl + and Ctrl - (or Ctrl + mouse wheel up/down) will increase/decrease the zoom of your browser as usual. It will make the fonts bigger, but keep the graph as centered as it can be.

Tips and FAQ and stuff

Features I added/improved since v1

comparing v1 to v2 graph images

This is version 2 of the Sunburst topic explorer. Here are a couple changes (in no particular order):

Coming soon

A couple features that I want to finish:

Sooo… how many topics are there?

I did a presentation a couple years ago for the EDA Summit where I tried to figure out exactly how many different Solace topics there are. As a reminder, Solace topics:

Using regular ASCII characters, a topic can be up to 250 characters long; if you use non-ASCII chars (accents, CJK, emojis, etc.) then the length will be reduced depending on how many bytes it takes to encode each character.

To simplify my calculations, I assumed the following:

So not long or overly-complex topics. Well, the answer is ~10^86 possible topics!!! Or written another way:

​100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 possible topics

Or: more than the number of atoms in the obervable universe! 🤯

That's a lot! Good enough for most use cases I'd say. But, BTW, the actual number of all possible full-length, all-chars Solace topics is something ridiculous, like 10^530. Mathematically less than ∞, but still pretty big..!