Flow Director and SwiftMQ
Flow Director is a tool that works as an add-on to SwiftMQ which is an enterprise messaging platform available as open source Community Edition (CE) and the commercial Universal (UR) and High Availability (HA) edtions. Flow Director works with all editions but only requires SwiftMQ CE so there are no additional license costs involved when using Flow Director.
A message broker in SwiftMQ is called a router because it routes messages from message producers to message consumers. Routers can be connected to build large router networks. SwiftMQ supports the messaging protocols JMS, AMQP and MQTT.
Flow Director / SwiftMQ Integration
Flow Director consists of a server and a web app. The server integrates a web server where the web app is loaded from. The server connects to one SwiftMQ router as a JMS client. This router can be part of a router network but it is only a single Flow Director server per router network.
Flow Director takes control over the SwiftMQ Streams engines of all routers in a router network.
Bridging Data from other Message Brokers
It is possible to run a Flow Director / SwiftMQ pair fully separate from a production system or to use data from other message brokers such as ActiveMQ, RabbitMQ, SwiftMQ, Solace or IBM MQ.
Bridges are created by dragging a
Connection component into a flow and connect it with an
Introduction to Flow Director
Flow Director is organized in Apps. Each app is independent from other apps and fully isolated, even if flows from different apps run on the same router node.
An app contains the complete authentication and authorization for this particular app. A user logs into an app, not into Flow Director. Users can be created with different rights which is realized through rights on menu entries.
Apps are created and managed through the Flow Director Management App.
Flow Director uses the Flow Based Programming paradigm to create Streams. Functionality is provided as Flow Components which are organized in Flow Component Libraries. Flow components are connected together and the result is a Flow.
Flow component libraries exists for many use cases. The base library are a full set of components of SwiftMQ's Stream Interface to intercept, analyze, process and output message streams flowing through a SwiftMQ router. Other libraries produce dashboard output streams, access JDBC databases, provide a REST client with predefined services (e.g. Slack, PayPal, MailChimp) and so on.
Flows can be organized in sub flows which are reusable in other flows. A flow that can be used as a sub flow is tagged
subflow and can then be dropped into another flow as a component. This makes repositories of reusable functionality
Flows can be deployed, undeployed, updated, activated, deactivated in the router network. This is called orchestration and is done from a single orchestration console.
A Flow Viewer can be used after activation of the flow to live view messages travelling between components and to see debug information.
Flow Director extends SwiftMQ's communication capabilities by allowing you to create a Web API. HTTP routes can be defined with flows acting as request handlers.
Flows are often used for realtime streaming analytics and produce data. This data can be visualized in dynamic dashboards. A graphical dashboard editor is used to place components and to connect them with the data streams produced from flows.
Dashboards can be marked as
public which makes them viewable without the need to authenticate at Flow Director. They are
ideal to create dashboards that can be viewed in network operation centers, on information boards or on status
screens above industrial devices. Public dashboards can also be integrated into custom web pages.
Like flows, dashboards can be orchestrated from a single orchestration console. They can be connected to a particular router as well as to all routers dynamically. This is used if the same flows run on all routers of a network.
Flows, flow component libraries and dashboards are stored at the Flow Director server under the respective app. Complete apps as well as single or sets of flows and dashboards can be exported and imported to another Flow Director instance with drag and drop. This makes it possible to develop on one Flow Director server and then move it to a production Flow Director server.
Automatic SwiftMQ Setup
Flow Director stores all data at the Flow Director server. If a new SwiftMQ router node joins the router network, it detects it and starts an automatic setup process by deploying all apps to the new router node. The same takes place if an app is imported into an existing SwiftMQ router network. This setup takes about a minute and all apps can be used after completion. This makes automatic scaling possible by just starting new SwiftMQ routers.
Flow Director Management App
This is the system app of Flow Director. It is used to create, change, delete, export and import apps.
This is a full replacement of the graphical administration tool SwiftMQ Explorer included in SwiftMQ UR and SwiftMQ HA. Explorer App can fully administer the router network connected to Flow Director.
Router Monitoring App
This app monitors the connected router network and displays current states as well as histories of all kind of collected data (memory, disk usage, network throughput and so on) in dashboards per router. It is also able to send conditional alerts to administrators.
Warehouse Sample App
This app is a warehouse simulation (online shop) with different participants (store, accounting, customers, producers, shippers). It consists of 2 parts: The warehouse application which - in real world - usually runs as remote messaging client applications and a statistic part consisting of flows that intercept messages sent between the app flow's and produce dashboard data.
It should demonstrate how message flows from an existing application can be intercepted and analyzed without touching the application.