HacklabMQ: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 13: | Line 13: | ||
** Format: TBD | ** Format: TBD | ||
* eight - 8. All systems should print or announce "eight" when they receive a correctly formatted eight message. [https://www.youtube.com/watch?v=87H6m2v4zNs 8]. | * eight - 8. All systems should print or announce "eight" when they receive a correctly formatted eight message. [https://www.youtube.com/watch?v=87H6m2v4zNs 8]. | ||
** Format: | ** Format: <pre>{eight: 8}</pre> | ||
== Queues == | == Queues == |
Revision as of 00:14, 6 October 2014
The lab has an AMQP-based message queuing infrastructure shared between various services. The broker RabbitMQ is located on moa (192.168.111.14), which is on the lab's LDAP system.
Exchanges
- door.entry - Fanout exchange, one message gets pushed to the exchange
- Format: XML format described on the doorbot page each time a card is swiped at the door.
- notification.graphic - Fanout exchange, messages pushed to this exchange indicate animated graphics which should be sent to lab occupants somehow (e.g. LED sign)
- Format: Name of the animation to display. Currently "ostrich" is the only supported animation.
- notification.general - Fanout exchange, messages pushed to this exchange indicate graphics which should be sent to lab occupants somehow (e.g. LED sign, twitter, doorbot)
- Format: JSON, 'text' and 'image' keys, images referenced should be in NFS user home directories
- statistics.bandwidth - Fanout exchange, messages pushed to this exchange indicate bandwidth statistics that can be stored/reported by other systems
- Format: TBD
- statistics.power - Fanout exchange, messages pushed to this exchange indicate power statistics that can be stored/reported by other systems
- Format: TBD
- eight - 8. All systems should print or announce "eight" when they receive a correctly formatted eight message. 8.
- Format:
{eight: 8}
- Format:
Queues
Queues are named <exchange>.<service>, e.g. doorbot's door.entry queue would be is door.entry.doorbot.
Message Flow Diagram
<graphviz> digraph graphname {
node [ style=filled fillcolor="papayawhip" ] "Building Door System" [shape=house style=filled fillcolor="palevioletred1"] "Building Power System" [shape=house style=filled fillcolor="palevioletred1"] "LED Sign\nsign0" [shape=house style=filled fillcolor="palevioletred1"] "Stats Sign\nsign1" [shape=house style=filled fillcolor="palevioletred1"]
"door.entry" [shape=trapezium style=filled fillcolor="paleturquoise1"] "notification.general" [shape=trapezium style=filled fillcolor="paleturquoise1"] "notification.graphic" [shape=trapezium style=filled fillcolor="paleturquoise1"] "notification.text" [shape=trapezium style=filled fillcolor="paleturquoise1"] "statistics.power" [shape=trapezium style=dotted] "statistics.bandwidth" [shape=trapezium style=filled fillcolor="paleturquoise1"] "door.entry.twitter" [shape=box style=filled fillcolor="palegreen1"] "door.entry.notification" [shape=box style=filled fillcolor="palegreen1"] "notification.general.doorbot" [shape=box style=filled fillcolor="palegreen1"] "notification.general.ledsign" [shape=box style=filled fillcolor="palegreen1"] "notification.graphic.ledsign" [shape=box style=filled fillcolor="palegreen1"] "notification.text.ledsign" [shape=box style=filled fillcolor="palegreen1"] "statistics.power.statssign" [shape=box style=dotted style=dotted] "statistics.bandwidth.statssign" [shape=box style=filled fillcolor="palegreen1"] "HTTP API\nTwitter" [shape=hexagon style=filled fillcolor="royalblue1"] "IRC #hacklabto (recv)" [shape=hexagon style=filled fillcolor="royalblue1"] "IRC #hacklabto (send)" [shape=hexagon style=filled fillcolor="royalblue1"] "Building Door System" -> "HTTP Service\ncard_event" -> "door.entry" "door.entry" -> "door.entry.notification" "door.entry" -> "door.entry.twitter" "door.entry.notification" -> "doormsg_to_notification" -> "notification.general" "door.entry.twitter" -> "hacklab_door_tweeter" -> "HTTP API\nTwitter"
"notification.general" -> "notification.general.doorbot" "notification.general" -> "notification.general.ledsign" "notification.general.doorbot" -> "doorbot (HacklabMQ)" "doorbot (HacklabMQ)" -> "IRC #hacklabto (send)" "notification.general.ledsign" -> "gennotification_sign_feeder"; "gennotification_sign_feeder" -> "HTTP Service\nSign Text Renderer" "HTTP Service\nSign Text Renderer" -> bmix bmix -> "LED Sign\nsign0"
"IRC #hacklabto (recv)" -> "doorbot (HacklabMQPublisher)"
"doorbot (HacklabMQPublisher)" -> "notification.text" [ label="!sign" ] "notification.text" -> "notification.text.ledsign" "notification.text.ledsign" -> "ledsign_feeder" "ledsign_feeder" -> "HTTP Service\nSign Text Renderer" "doorbot (HacklabMQPublisher)" -> "notification.graphic" [ label="*ostrich*" ] "notification.graphic" -> "notification.graphic.ledsign" "notification.graphic.ledsign" -> "ledsign_ostrich_feeder" "ledsign_ostrich_feeder" -> "bmix"
"Building Power System" -> "HTTP Service\npowerdata" -> "statistics.power" "statistics.power" -> "statistics.power.statssign" "statistics.power.statssign" -> "statssignd"
"Firewall SNMP" -> "bandwidth_feeder" -> "statistics.bandwidth" "statistics.bandwidth" -> "statistics.bandwidth.statssign" "statistics.bandwidth.statssign" -> "statssignd"
"statssignd" -> "Stats Sign\nsign1"
} </graphviz>