title: Message broker vs. database and monitoring
body: <p>My question has some similarities to this question: 
  <a href="https://stackoverflow.com/questions/13005410/why-do-we-need-message-brokers-like-rabbitmq-over-a-database-like-postgresql">Why do we need message brokers like RabbitMQ over a database like PostgreSQL?</a></p>
  
  <p>In my current (semi-professional) project I'm also at the point to decide whether to go for a database, message broker-based (e.g. with RabbitMQ) or even a totally different solution.  </p>
  
  <p>Let's imagine 2 tools, Tool A and Tool B. 
  Whenever Tool A runs and finished, there <strong>might</strong> be something to do for Tool B. Execution of Tool A takes quiet some time (> 60 sec) and often there will be nothing to do for Tool B. Tool A provides some metadata for Tool B so Tool B knows what to do. </p>
  
  <p><em>Message-based solution</em>: Establish a message queue which Tool B is consuming. In case Tool A was executed <strong>and</strong> Tool B should run, Tool A publishes a message (including the metadata) to the queue which Tool B receives so Tool B will run using the metadata from the message.</p>
  
  <p><em>Database solution</em>: Whenever Tool A is running it adds a database record with e.g. timestamp, the metadata and status "RUNNING". In case Tool A was executed <strong>and</strong> Tool B should run, it updates the DB record status to "NEXT_TOOL_B". Tool B is constantly querying the DB for records with "NEXT_TOOL_B" status. In case it finds something, Tool B will run using the metadata from the DB records. </p>
  
  <p>While I'm aware of the disadvantages of the database solution e.g. the constant polling from Tool B, I miss one feature of it in the message-based solution: </p>
  
  <p>Whenever a 3rd Tool, say Tool C, e.g. a control panel UI, wants to know the current status it can also query the DB at any time and it will find a "RUNNING" status in case Tool A is still at work. In the message solution, I don't really see a way to "monitor" the status unless the finish message will be on the queue. </p>
  
  <p>So my question is, can you think way to achieve this using messages or any other method that gets along without polling?</p>