Rabbit MQ is an amazing messaging system deployed across thousands of organizations worldwide. Most organizations seem to be using RabbitMQ as a way to orchestrate operations between microservices. I recently used RabbitMQ to orchestrate multiple mobile apps, a core application state service, and a video rendering cluster. Rabbit primarily implements an interesting protocol called AMQP 0-9-1. AMQP 0-9-1 is a binary protocol. I used AMQP 0-9-1 in my implementation and have not experienced any issues yet, despite tough network conditions. Binary protocols are notoriously difficult to monitor. Observability is an important part of measuring and monitoring any system.
At some point along the way, RabbitMQ provided a functionality they refer to as
"firehose" where you can get copies of messages. I am assuming that debugging and observability became important after they ironed out the bugs with the initial server implementation. At the time of writing, RabbitMQ also provides several other interesting protocols including STOMP, MQTT, AMQP 1.0, WebSockets, and RabbitMQ Streams.
As a global technology community, we have been here before but under different conditions. I spent considerable time working with the AMF (
https://en.wikipedia.org/wiki/Action_Message_Format) protocol early in my career routing messages between PHP, Flash applications, and media servers. AMF is also a binary protocol. AMF was a brilliant and successful protocol for the time period it thrived in. Flash was able to accomplish wide spread real time VOIP and streaming capability before any other platform in large part due to AMF as well as the other protocols developed along side it like, RTMP, RTMPS, and finally the video streaming greatest of all time, HLS.
I have also spent quite a bit of my time working with the XMPP messaging protocol for various personal projects. In particular I have spent time with the
Openfire server. You may not want to, but I do not see any reason at a high level why you could not substitute RabbitMQ as a message bus for Adobe Media Server or Openfire. Obviously RabbitMQ has been tuned to be a modern message queue and broker, but many systems of the past have also served in this capability.
I feel like some of these fads are cyclical. Old is now new again, but there are major underlying changes driving the cycles. The massive driver happening right now is the migration away from on premise application and infrastructure to cloud infrastructure. When done successfully, you can understand the organizational wins. Businesses are hoping that this migration will become more cost effective and scalable in the long run. I couldn’t help but laugh when reading about
Ubers Devpod Remote Development Environment. With massive code repositories you can understand the speed enhancement by moving a development environment all the way into the cloud. This is another cyclical cycle but slightly different that we saw when terminal and mainframe models were prevalent.