02 May 2020 | Andreas Müller
In this article, I want to highlight the features you get if you are already a SwiftMQ user and want to use Flow Director with it.
Flow Director uses SwiftMQ as its runtime platform internally. An installation, either Docker-based or the Unix and Windows distributions, consist of the Flow Director server with an embedded SwiftMQ router.
There are 2 ways to connect to an external SwiftMQ Router Network.
In this mode, you run Flow Director in addition to your existing SwiftMQ deployment and connect both via a bridge flow component as shown here:
Do anything with the data, .i.e., consume it from a queue or topic of a remote router, process, analyze and visualize it, and maybe send it back to another queue/topic of the remote router. Because you can integrate any other messaging system like Kafka in the same way, you can combine them all, i.e., receive from IBM MQ and send it to SwiftMQ. The possibilities are endless.
The significant advantage of this mode is that you don't touch your existing messaging system (no matter which you use). You don't need to run a particular SwiftMQ release to use Flow Director, nor do you need to use SwiftMQ at all! It also works with ActiveMQ, RabbitMQ, Kafka ... you name it. You just run it side-by-side. For this reason, we see this as the default deployment method. It's just easy to set up and works.
Here you connect Flow Director to your existing SwiftMQ network. The flows are deployed and executed on your SwiftMQ routers.
There are multiple ways to establish a routing connection:
Use Explorer App
Create the routing connector through the Explorer app and you are done. I would use this way if the connector should be live longer, i.e., you permanently use Flow Director to manage a particular SwiftMQ Router Network.
Use CLI from a Flow
Create a flow that executes a CLI flow component to create a routing connector to a remote router on flow start and delete the connector on flow stop. If you are clever, what I assume, you make this flow a template flow and define the routername as a flow parameter. This way, you only need to copy it and set the routername accordingly and are able to connect to another router.
This method can also be used to connect standalone routers and create a temporary network, manage it, deploy and run some flows and then disconnect.
Use the internal Routing Listener
The router embedded in Flow Director already has a routing listener defined on port 4100. So you only need to let your remoted routers connect to this listener. This is way is recommended if you want to scale Flow Director by adding more routers. You only need to configure the remote router to connect but there is no configuration required at Flow Director.
With this method, you get the same features as with the side-by-side deployment. The advantage is here, you don't need to go through a network to access a queue or topic. You can access it directly by running a flow on that router where the destination is defined. You can also integrate any other messaging system but then from within your routers.
But the real advantage of integrated over side-car is that you get new management and monitoring capabilities which are:
This allows you to do everything through the Flow Director web interface without the need to use any other tools.
Keep in mind: You need SwiftMQ release 12.1.0 or higher for this mode.
You can use Flow Director side-by-side to your existing messaging system, or you can run it integrated and connect it to your existing SwiftMQ Router Network. Both have the same features but the side-by-side deployment runs independently from your existing messaging infrastructure while the integrated deployment avoids network access and includes management, monitoring, and integrates nicely with Prometheus/Grafana. It allows you to do everything through Flow Director's web interface without the need to use any other tools. You decide!
Andreas is a well-known messaging expert, creator of SwiftMQ and in his side job CEO of IIT Software GmbH. He leads the overall development of Flow Director and has an eye on any piece to fit into the whole picture.