If you’re an event-driven geek like me, you’ll be very excited to hear that our event management tool PubSub+ Event Portal can now show you, in real-time, the implications of changes to your event-driven applications’ topics or subscriptions at design-time! This is in addition to providing a dynamic topic subscription builder to make it fast and easy to extend or modify your event-driven architecture design.

Enterprise Architects love the benefits of dynamic hierarchical topics with variables that are replaced with values by the publishing applications at runtime. With this structure, subscribing applications can receive exactly the events they need and it allows for additional use cases without necessarily having to make changes to existing producers/consumers. And until now, they have not been able to model the dynamic nature of this powerful feature in their event-driven design.

Knowing in advance how your events will flow between applications can help you avoid design errors, exceeding application capacity limits, upgrade and compatibility issues, compliance and security issues, costly cloud usage charges, and other hassles that keep you awake at night. Using PubSub+ Event Portal’s dynamic topic subscription builder, you can quickly configure your subscriptions just like in the broker. No more designing in PowerPoint or Visio or the back of a napkin. And one of the best parts is that you don’t have to start the design from scratch! You can discover your existing EDA environment from your brokers and then do all kinds of what-if analysis on extensions ore modifications before you deploy your updated design.

In the following sections, I’ll walk through an example of how this new capability works with an event-driven architecture that distributes sports data. If you prefer to watch a video, please check this out below. Otherwise, read on!

Demo how event management tool PubSub+ Event Portal can show you implications of changes to your event-driven applications’ topics in real-time

Dynamic Topic Subscription Builder – An Example

In this example, there’s already a “Sports Info Distribution App” that publishes game data for four event types – baseball, basketball, football, and hockey. There is a “Sports info Data Lake” consuming all of this data via “All-In-Game Stats Queue” with a broad subscription sports_data/> that attracts all the associated event instances.

Dynamic Topic Subscription Builder

The goal of the “Sports scores alerts” application is to allow users to receive score update alerts filtered for their favourite teams only.

I’m a huge hockey fan so this example demonstrates how to create a subscription for alerts that include only score data from the Ottawa Senators and Ottawa 67s hockey teams.

Step 1: Configure a Client Delivery Endpoint (CDE)

First, I configure the application “Sports score alerts” to subscribe to the hockey dynamic event type. I do this via a client delivery endpoint (CDE) – which for Solace brokers represents an event queue, a durable topic endpoint, or a direct client connection with associated subscriptions for a direct messaging class of service. In this case, I make it a direct client endpoint.

Configure a Client Delivery Endpoint

Configure a Client Delivery Endpoint

I make sure to select the correct “Logical Event Mesh”, which is the event mesh that the associated events are published to. In this case, it’s the “International Logical Event Mesh 1”, which maps to a broker Message VPN or an event mesh which is a connected set of Solace broker Message VPNs.

Step 2: Add a subscription to the client delivery endpoint

Now I can see all four event types that are available to add the Ottawa Hockey Scores endpoint. I select the Hockey Game Data event which opens a new topic subscription builder. This builder guides users step-by-step through the process of building a subscription through drop down menus to define the specific topics that they want to attract to their application. In my case, it’s what type of sport, what league, and what city.

Topic subscriptions let you filter the data so that consuming applications can specify the data that they want to consume. It supports literal values (which is just a string), and both bounded and unbounded variables. In this example, {league} is a bounded variable topic level which is replaced with literals by the publishing application at runtime.

Add a subscription to the client delivery endpoint

Below, you can see the predefined set of values that are possible for {league} – NHL, WHL, OHL, etc.

predefined set of literal values

In this example, I select ‘OTT’ for the {city} variable and ‘scores’ for {hockey_data_type} variable.

Set specific subscriptions

Now the graph view is updated with the subscription to “Hockey Game Data” by the “Sports scores alerts” app and it will be filtered to only get events with scores for hockey teams in Ottawa.

PubSub+ Event Portal graph view

So there you have it. Adding dynamic topic subscriptions with wildcards to an application is now super easy!

But there’s more…

A key part of this new capability is using this level of detailed modeling to predict what will happen in your runtime…so that you can do a what-if analysis and make changes to avoid negative impacts to your production systems.

Identify Downstream Impacts When Changes to Event-Driven Apps are Made

In the graph showed above, you can see that the “Attendance Info Analytics” app is not attracting any events, but it does already have a queue with a subscription to sports_data/attendance/>, as I want this application to subscribe to all the attendance data for all sports events – baseball, basketball, football, and hockey.

So now I’m going to create a new event called “Attendance” and set its topic address to be sports_data/attendance/{sport}/{league}/{team}/{city}/……

Create a new event called “Attendance”

When I proceed to save the event, I get a warning stating that some applications will start to consume this event automatically through subscriptions. PubSub+ Event Portal precisely models the algorithm that the PubSub+ broker runs to route events to the right clients or endpoints.

Below you can see that the first application (Attendance Info Analytics) should get this attendance data. However, I don’t want the second application (Sports info Data Lake) to get the attendance data, at least not through the “All In-Game Stats Queue” client delivery endpoint, because attendance is not ‘in-game’ data.

automatic consuming applications PubSub+ Event Portal 

So it looks like the issue is the “All In-Game Stats Queue” subscription. It is too broad and attracting more event types than I had intended.

I can easily edit the “Sports Info Data Lake” application by modifying the subscription and making it more specific. For instance, I change it to sports_data/game_data/> to attract only the required events.

PubSub+ Event Portal edit client delivery endpoint

And just like that, I am able to fix an unintended result of updates to my architecture without causing further issues, or even a lot of investigation, and before I deploy updates to my applications in the runtime.

Summary

PubSub+ Event Portal has added this new capability to help architects model their event-driven architecture with an added level of detail and the same dynamic publisher-to-subscriber relationship capabilities that the PubSub+ brokers provide in the runtime. It helps users identify unwanted impacts to affected applications at design-time. Watch this video to learn how to further leverage the new PubSub+ Event Portal capabilities outlined in the step-by-step instructions above. You can try it for FREE by signing up for a 60-day free trial.

A topic subscription builder makes it easy to create new subscriptions with wildcards to filter the event streams for only the data that is needed. It also provides an immediate view of exactly which of the upstream events each of your subscriptions will attract to your applications.

To enjoy many more very important advantages of dynamic hierarchical topics, you should follow Solace’s topic architecture best practices, especially when creating a new topic taxonomy or a new event driven architecture. This blog post explains why an event’s topic should describe the data in the payload, and how a well-designed topic architecture results in several key benefits for your overall event driven architecture. It even walks you though how to design such a topic structure that is specific to, and ideal for, your enterprise!

Topic Hierarchy and Topic Architecture Best Practices

Darryl MacRae
Darryl MacRae

Darryl MacRae is a Director, Product Management responsible for Solace’s latest innovation and event management product – PubSub+ Event Portal. Darryl loves to collaborate with the development and customer facing teams to build innovative products that help companies become event-driven and responsive to their clients.
 
Darryl has over 20 years of experience in defining and delivering GUI based design and management products which focus on making users’ lives easier and more efficient.  Darryl’s ideal workday includes partnering with Solace’s customer facing teams to demonstrate to architects and developers how a product can contribute to their day-to-day tasks with insights that bring value to their company.
 
Prior to joining Solace in 2016, Darryl worked in the telecom industry, most recently for Ciena, and earned a Bachelor of Electrical Engineering degree at McGill University. When he’s not working, Darryl coaches his kids in their sports activities and loves playing golf.