Hi folks,
I'd like to discuss a topic which was briefly touched on Aeolus developer Conference in Brno. Many components of Aeolus project need to send notifications to other components:
Heat -> Conductor (deployment/instance state changes)
Conductor -> Winged Monkey (deployment/instance state changes)
Imagefactory -> Conductor (notifications about image build&upload state)
DC tracker* -> Heat (notifications about instance state changes)
DC tracker -> Conductor (notifications about other provider resource changes, realms availability, hw profile changes)

* DC Tracker - this component is actually not agreed yet, it was just a proposal some time ago, but I believe this will be needed.

As far as I know there is no a unified plan how to deal with notifications between components. At this point notifications are implemented only in Imagefactory. This implementation is for now quite simple - a notification callback is sent back as http PUT request. It doesn't cover any failure situations (network error, auth error, Conductor is not running...), so if a request is not successful, no retry is done.

I think we need more robust notification system between all components above, this system should support at least:
1) retry on failure
2) keep correct order of notifications
3) support authentication

And here it comes...

Why not use a message bus (an AMQP implementation) for communication between all involved components?
- it supports all required features out of the box
- clients exists for all languages involved in Aeolus project
- notifications will be solved in the same way between all components

Or is there some other solution how to solve notifications as painless as possible while keeping required robustness? What is your preferred solution of this problem?

Jan

Reply via email to