Data Spine RabbitMQ
RabbitMQ was selected to be the Message Bus/Broker of the Data Spine. RabbitMQ is a message broker or message-oriented middleware that implements AMQP (Advanced Message Queuing Protocol). It is one of the most popular and most widely deployed open source message brokers.
Some of the features of RabbitMQ and their significance in EFPF are explored below:
- Support for protocols
- In EFPF, we primarily make use of MQTT, MQTTS and AMQP (0-9-1)
- RabbitMQ supports AMQP inherently and MQTT/MQTTS via a plugin
- It also supports STOMP, AMQP 1.0, HTTP and WebSockets
- Docker container has been selected as a deployment unit in EFPF
- RabbitMQ’s Docker images are made available with each release
- Management and Monitoring
- RabbitMQ provides a management GUI (see Figure 1 below) and an HTTP-based API for administration, management and monitoring of channels/topics, users, dataflow stats, etc. via a plugin.
- In addition, RabbitMQ also provides a management command line tool ‘rabbitmqadmin’ that can be used in performance critical environments such as production as opposed to the GUI.
- Identity and Access Management
- RabbitMQ supports multiple SASL (Simple Authentication and Security Layer) authentication mechanisms out of which, three are built into the server - PLAIN, AMQPLAIN and RABBIT-CR-DEMO and one ‘EXTERNAL’ is supported via a plugin. More such authentication mechanisms are supported via plugins. In essence, RabbitMQ supports widely used password-based, token-based and client certificates based authentication.
- RabbitMQ also supports multi/tenant authorization with the help of ‘virtual hosts’ which enable logical grouping and separation of resources such as connections, exchanges, queues, bindings, user permissions, policies, etc. Performance and Scalability
- RabbitMQ supports clustered deployment for high availability and throughput.
- Extensibility, Tools & Plugins
- RabbitMQ’s flexible plug-in-approach supports extension of functionality through the use of plugins.
- It provides official client libraries for many programming languages and also various developer tools for supporting frameworks such as the Spring Framework.
- The documentation provided by the RabbitMQ developers and community is comprehensive and it covers tutorials and guides from installation, setup and usage of RabbitMQ to developments of new plugins.
Figure 1: RabbitMQ Management GUI
Data Spine RabbitMQ Documentation
- RabbitMQ Documentation: https://www.rabbitmq.com/documentation.html