2

Background

I have an application that is using Rabbitmq messaging for communication between components. There are a decent number of exchanges, queues and routing keys and four main components acting as either publishers, conusmers or both. I want to provide a document that will show the messaging structure of the system, but was unable to find examples even on the Rabbitmq site itself. The obvious candidate is the UML sequence diagram, but I want to be sure to show the exchanges, routing keys, queues, fall back queues and DLQ clearly. Not that it really matters, but I am using plantuml to produce the diagrams.

Question

What type of UML document should be used to document a messaging system and are there any examples I can review?

Update

I want to be careful about capturing the information of the publisher / consumer relationship and also the flow of messages through the system as defined by workflows. I am thinking it should probably be two different diagrams.

Graham
  • 651
  • 2
  • 10
  • 23
  • 1
    Another obvious candidate are [UML Activity Diagrams](http://www.uml-diagrams.org/activity-diagrams-examples.html) – xmojmr Mar 02 '17 at 08:59
  • 2
    It depends on your audience. From a basic class diagram to almost anything UML offers is possible. Besides that: it's not a "style" question in any way. There is no "UML style". – qwerty_so Mar 02 '17 at 09:36
  • @ThomasKilian i updated the title and removed style, i guess what i was getting at is which of the diagram templates is traditionally used,sequeunce, activity etc. The audience is the team (dev, testers, analysts) and clients (product owners/tech). – Graham Mar 02 '17 at 09:43
  • 1
    That's fine now with the style. But still, my comment stands. There's so much you _can_ say with UML, but only you know what's _needed_. In a tech environment you could probably live with just class/sequence. If business is involved you will definitely add use cases. Deployment might also be of interest. There you go: anything goes. – qwerty_so Mar 02 '17 at 10:44
  • @ThomasKilian yes i get what you mean, i will go with a sequence diagram for now and see how it plays out. – Graham Mar 02 '17 at 10:50
  • 1
    Yes. Just see if somewhere a gap opens up and then try to fill it with some additional aspect (aka. diagram) of your model. Over time you'll get experience where you will need what. Anyhow, I'd recommend to look for the ICONIX methodology which put me on rails quite well many years ago. – qwerty_so Mar 02 '17 at 11:30

2 Answers2

1

So as discussed in the comments section there is no one answer to this and the key to be able to produce a useful diagram is to properly understand the target audience for the diagram you are creating. In my case i have decided to create a single diagram that shows the topology of the messaging system and then separate sequence diagrams that show how specific routes are used for specific workflows.

Graham
  • 651
  • 2
  • 10
  • 23
0

Maybe a mix could be a answer : 1 - Activity diagram to detail the workflow 2 - Sequence diagram to show more implementation detail maybe using asynchronous arrow

granier
  • 1,739
  • 13
  • 25