RabbitMQ HA in Xray using Quorum Queues

Xray uses RabbitMQ Quorum Queues (mandatory for v4.x). Replaces Classic Queue mirroring. 3-node cluster recommended for HA.

RabbitMQ in Xray

RabbitMQ is a critical component of the Xray architecture, serving as a message bus to facilitate communication between various application services. The entire scanning flow is broken down into various phases (like index, persist, analysis, etc), which reside in different services. Different queues in RabbitMQ serve as channels to facilitate communication between them and ensure end-to-end processing.

Classic Queues vs. Quorum Queues

Before version 3.124.x, Xray used Classic Queues (with mirroring). Classic Queues are a basic FIFO queue type with inherent design limitations that make them less reliable. Quorum Queues are a modern, more dependable RabbitMQ queue type designed to replace Classic Mirrored Queues. They provide a durable, replicated FIFO queue built on the Raft consensus algorithm. For more information, see the RabbitMQ documentation.

Deprecation and Migration

The RabbitMQ team deprecated support for Classic Mirrored Queues starting with version 4.0 and ceased community support for earlier versions. Consequently, Xray will no longer support Classic Queues and will transition entirely to Quorum Queues. Enabling Quorum Queues is a mandatory requirement to upgrade RabbitMQ to version 4.

Enabling Quorum Queues is a mandatory requirement to upgrade RabbitMQ to version 4.