Discover RabbitMQ topology.
-
Routing keys are segmented with dots (
.
).Segment name Routing key Extracted Assumed to be from_app splitter.experiment.something.assigned splitted The name of the publishing application. entity splitter.experiment.something.assigned experiment The entity that is participating in the action. actions splitter.experiment.something.assigned something.assigned The action(s) describing the event. -
Consumer tags are configured to contain the name of the consuming application.
Without arguments bin/rabbitmq-graph
will connect to localhost:15672
with the default guest user.
Unit tests:
bundle install
bundle exec rspec
Integration:
docker run -d -p 15672:15672 -p 5672:5672 rabbitmq:3.9-management-alpine
export RABBITMQ_API_URI='http://guest:guest@localhost:15672'
export RABBITMQ_URI='amqp://guest:guest@localhost:5672'
bundle exec rspec --tag=integration
bundle exec bin/rabbitmq-graph
Setting | Configuration | Effect | Default |
---|---|---|---|
RabbitMQ management URL | -uURL --url=URL or environment variable RABBITMQ_API_URI |
Specifies the connection URL to RabbitMQ management API | http://guest:guest@localhost:15672/ |
Save topology | --save-topology=FILE |
After discovery save the topology to the given file. | disabled |
Read topology | --read-topology=FILE |
Skip discovery and use a stored topology file. | disabled |
Choose format | --format=FORMAT |
Choose an output format. --help will give a list of available options. |
DotFormat |
Setting | Configuration | Effect | Default |
---|---|---|---|
Show only applications | --dot-applications-only |
Creates a graph without entity nodes. | disabled |
Label details | --dot-label-detail=DETAILS |
Comma separated segment names to display on labels drawn between applications and/or entities. | 'actions' |
- enabled: will only show application to application relations.
- disabled (default): will show application to entity to application relations. The edge going into the entity and coming out of the entity will have the same label.
Affects the labeling of edges:
'entity,actions'
: displays the entity name and the actions on the edge.'entity'
: displays the entity name on the edge.'actions'
: displays the actions on the edge.''
(empty string): displays no labels.
Any combination and order of the above is allowed.
Running the discovery against a dockerised rabbitmq:3.9-management-alpine
:
$ docker run --detach --publish 5672:5672 --publish 15672:15672 rabbitmq:3.9-management-alpine
$ RABBITMQ_API_URI=http://localhost:15672/ bin/rabbitmq-graph > test.dot
I, [2018-04-30T13:05:29.735060 #90042] INFO -- : connecting to rabbitmq HTTP API (http://[email protected]:15672/)
Discovering bindings: |================================================================================================|
Discovering queues: |==================================================================================================|
$ fdp -O -Tpng test.dot # assumes "graphviz" is installed
$ open test.dot.png
Hutch supports consumer tag prefixes since 0.24.