Generate markdown flowcharts of your rabbitmq topology.
rabbit-mermaid takes your rabbitmq topology files and turns them into markdown flowcharts. Direct, fanout, and topic-based exchanges are supported.
$ npm install rabbit-mermaid --save
const { MermaidGenerator } = require("rabbit-mermaid");
const topology = {
exchanges: [
{
name: "images",
vhost: "/",
type: "direct",
durable: true,
auto_delete: false,
internal: false,
arguments: {}
}
],
queues: [
{
name: "archiver1",
vhost: "/",
durable: true,
auto_delete: false,
arguments: {}
},
{
name: "archiver2",
vhost: "/",
durable: true,
auto_delete: false,
arguments: {}
},
{
name: "cropper",
vhost: "/",
durable: true,
auto_delete: false,
arguments: {}
},
{
name: "resizer",
vhost: "/",
durable: true,
auto_delete: false,
arguments: {}
}
],
bindings: [
{
source: "images",
vhost: "/",
destination: "archiver1",
destination_type: "queue",
routing_key: "images.archive",
arguments: {}
},
{
source: "images",
vhost: "/",
destination: "archiver2",
destination_type: "queue",
routing_key: "images.archive",
arguments: {}
},
{
source: "images",
vhost: "/",
destination: "cropper",
destination_type: "queue",
routing_key: "images.crop",
arguments: {}
},
{
source: "images",
vhost: "/",
destination: "resizer",
destination_type: "queue",
routing_key: "images.resize",
arguments: {}
}
]
};
const mermaidGenerator = new MermaidGenerator(topology);
const opts = {};
console.log(mermaidGenerator.generate(opts));
/** Output:
graph LR
subgraph Images
Images(("Images<br/>(direct)"))
Images --routing_key=images.archive--> archiver1("archiver1")
Images --routing_key=images.archive--> archiver2("archiver2")
Images --routing_key=images.crop--> cropper("cropper")
Images --routing_key=images.resize--> resizer("resizer")
end
**/
Drop the generated output into a markdown file that supports mermaid and you will get
rabbit-mermaid has a handful of customizable format options.
Specifies the direction of the graph layout.
-
TB - top bottom
-
BT - bottom top
-
RL - right left
-
LR - left right
-
TD - same as TB
Default | API Override |
---|---|
LR |
`chartDirection: "<LR |
Specify the exclusive list of exchanges that you want in your output. All other exchanges will be ignored.
Default | API Override |
---|---|
ALL |
exchanges: Array<string> |
Whether or not to display exchange to exchange bindings in the generated output. This is disabled by default to reduce noise in large topologies with many dependencies.
Default | API Override |
---|---|
false |
showExToExBindings: <boolean>" |
MIT © David Salas