FedMsg is the message passing system based on ZeroMQ used by the Fedora project for its infrastructure. There's been a project (see SummerOfCode2013/StudentApplications/SimonChopin) to adapt this system for Debian use.
Topology
Each Debian service should have its own public endpoints. Furthermore, there will be a publicly accessible relay that will subscribe to all available *.debian.org enpoints as well as the *.debian.net endpoints, and send out messages from the former on one endpoint and another for the latter, to keep the distinction between official services.
NB: Currently, there is only one open relay endpoint at tcp://fedmsg.debian.net:9940 and all messages it sends out are from *.debian.net services, but this will almost certainly change in the future.
Topic scheme
Each message published on the bus should have a naming scheme of the form
org.debian.$ENV.$SERVICE.$OBJECT(.$SUBOBJECT).$EVENT
With:
- $ENV in ['dev', 'stg', 'production']
- $SERVICE being the name of the service. We chose to use the name of the implementation rather than the host, i.e. dak rather than ftp-master, since a change of implementation would probably change the topic scheme anyway, and it matches the scheme our friends over at Fedora use.
- $OBJECT is a singular noun such as package, bug, whatever is the type of object to which the event relates.
$EVENT is the event triggering the message emission. upload, reject, migration would be possible events for a package, for instance.
Demonstration
The current fedmsg setup in Debian passes messages to a IRC gateway, allowing events to be seen on #debian-fedmsg (irc.debian.org).