RabbitMQ Queue Naming
Each deployment has a dedicated RabbitMQ queue for inference requests.
Queue Pattern
Pattern: infer_req.<deployment_id>
Example: infer_req.550e8400-e29b-41d4-a716-446655440000
Source Code
InferenceProxy
iris/inference_proxy/config.go ⧉
func (s *Settings) QueueName(deploymentID string) string {
return "infer_req." + deploymentID
}
InferenceWorker
iris/inference_worker/src/config.py ⧉
@property
def INFERENCE_QUEUE(self) -> str:
return f"infer_req.{self.DEPLOYMENT_ID}"
Queue Properties
- One queue per deployment (not per replica)
- All replicas consume from the same queue (competing consumers pattern)
- Queue is created when first replica connects
- Queue persists until deployment is deleted
- Dead-letter queue (DLQ): All inference queues share a single DLQ named
infer.dlqfor failed messages
Message Flow
- InferenceProxy publishes inference requests to
infer_req.<deployment_id> - All InferenceWorkers for that deployment consume from the same queue
- RabbitMQ distributes messages based on worker availability and prefetch limits
- Failed messages are routed to the shared DLQ
infer.dlq
This competing consumers pattern provides natural load balancing without requiring an external load balancer.