Starlight for RabbitMQ
Starlight for RabbitMQ acts as a proxy between your RabbitMQ application and Apache Pulsar™ cluster. It implements the AMQP 0.9.1 protocol used by RabbitMQ clients and translates AMQP frames and concepts to Pulsar ones. Starlight for RabbitMQ can be run as a standalone Java application, a Pulsar Protocol Handler, or a Pulsar Proxy Extension.
How Starlight for RabbitMQ works
AMQP 0.9.1, the protocol RabbitMQ uses, employs the concepts of Exchanges
, Queues
, and Bindings
to provide basic routing capabilities inside the message broker.
These concepts are mapped to Pulsar topics and features.
Starlight for RabbitMQ acts as a proxy and uses the Pulsar binary protocol to communicate with the brokers. This method allows RabbitMQ applications to leverage Pulsar features like load balancing of the topics on the brokers, batching of messages, partitioning of topics, and load balancing of the data on the consumers.
To learn more read our blog post about Starlight for RabbitMQ. |
Deployment options
Starlight for RabbitMQ can be run in various deployments:
-
Standalone Java application Running Starlight for RabbitMQ as a standalone Java application has the advantage of not impacting the resources used by the Pulsar cluster but on the other hand you need to deploy and manage the lifecycle of an additional runtime.
-
Pulsar Pluggable Protocol Handler Deploying Starlight for RabbitMQ in the broker as a Protocol Handler avoids having to deploy another runtime but there will be resources used by Starlight for RabbitMQ to handle the traffic that can have an impact on the load balancing algorithms used by Pulsar.
-
Pulsar Proxy extension Deploying Starlight for RabbitMQ in the Pulsar Proxy as a Proxy Extension avoids having to deploy another runtime if you already use the Pulsar Proxy and it will not have a big impact on the Pulsar Proxy functioning. Note that Proxy Extensions will be available in Pulsar v2.9+.
Limitations
The following capabilities have not been implemented:
-
Header exchanges (topic exchanges have been added)
-
Exclusive consumers
-
Non durable exchanges and queues
-
Transient messages (all messages are persisted)
Because RabbitMQ and Pulsar work differently, Starlight for RabbitMQ was designed to make the most of Pulsar’s scalability. This means that canceling an AMQP consumer will re-queue the messages that were received through it because it also closes the associated Pulsar consumers.