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.
Before version 3.124.x, Xray used Classic Queues (with mirroring). It is a basic FIFO queue type with some inherent design limitations which make it less reliable. Quorum Queues, on the other hand, are a modern and more dependable RabbitMQ queue type designed to replace Classic Mirrored Queues. They provide a durable, replicated FIFO queue built upon the Raft consensus algorithm. For more information, please refer to the RabbitMQ documentation.
The RabbitMQ team has deprecated support for Classic Mirrored Queues starting with version 4.0 and has ceased community support for earlier versions. Consequently, Xray will no longer support Classic Queues and will transition entirely to using Quorum Queues. Do note that the enablement of quorum queues is a mandatory requirement to upgrade RabbitMQ to version 4.