Skip to content

Message Topology

The Topology tab of the Messaging Explorer visualizes how messages flow between services in your Wolverine deployment. It answers: "Which services produce this message, and which services handle it?"

CritterWatch Message Topology — message routing across services showing source service, message type, broker, and destination service

View modes

A toggle at the top switches between four renderings of the same data; Table is the default:

  • Table — a sortable, filterable row-per-route list.
  • Graph — a force-directed graph.
  • Flow — a Sankey diagram where each flow's width is its throughput volume, so the heaviest paths stand out.
  • Architecture — a layered, system-level view.

In the graph views, nodes are services (rendered as circles) and brokers (rendered as a white tile carrying the transport's tech icon — RabbitMQ, Kafka, Azure Service Bus, etc.). Message types ride on the edges between them, not as their own nodes. In the Table view, brokers likewise show as a tech icon next to the server name.

Message type detail

Clicking a message-type row (Table) or an edge/node (graphs) opens the Message Type Detail drawer. The Table rows and all graph views funnel into this one drawer, so the affordances below are reachable everywhere:

  • View in Workflow — jump straight to the Workflow screen scoped to this type ("where does this fit?").
  • Publishers (subscribing endpoints) — the services + endpoint URIs that publish this type; click a service to open it.
  • Consumers (handlers) — the services and handler classes that consume it; View Handler Details opens the handler-chain detail page with the full generated source, middleware chain, and per-endpoint sticky routing.
  • Causation Chain — the handlers that produce or consume this type, when it participates in a runtime-observed cascade.

The full generated source code for a handler lives on the handler-chain / message-type detail pages, not in this drawer. Reach it via View Handler Details or from the Messages catalog.

Causation chains

For messages published while handling another message, CritterWatch reconstructs the cascade from runtime-observed causation, e.g.:

BookTripCommand → [TripBookedEvent, PaymentRequestedEvent]
PaymentRequestedEvent → [PaymentProcessedEvent]
PaymentProcessedEvent → [TripConfirmedEvent, EmailNotificationQueued]

These links are discovered at runtime as messages are processed and reported back to CritterWatch.

Filtering

Filter the topology by:

  • Service — show only connections involving a specific service
  • Message Type — highlight a specific message type and its connections
  • Brokers — show only messages flowing over specific brokers

Modular Monolith View

For modular monolith architectures where multiple handlers within the same process handle the same message type, CritterWatch displays "sticky handler" visualization — each handler appears as a distinct node even when they reside in the same service. This makes it immediately clear when one handler for a shared event is healthy while another is failing.

Free for read-only monitoring. A commercial license is required for administrative actions and the MCP server.