Use Multiple Consumers to handle multiple queues
masterInstead of creating one worker per queue, you can use multiple_consumers to listen to several queues within a single consumer process. This is useful for grouping related tasks and reducing the number of active workers.
- Each queue under a
multiple_consumersdefinition must specify its ownname,callback, androuting_keys. - The
callbackfor each queue must implementConsumerInterface. - You can optionally provide a
queues_providerservice that implementsQueuesProviderInterfaceto dynamically supply queues. - All queues in a
multiple_consumersblock share the same exchange.
multiple_consumers:
upload:
connection: default
exchange_options: {name: 'upload', type: direct}
queues_provider: queues_provider_service
queues:
upload-picture:
name: upload_picture
callback: upload_picture_service
routing_keys:
- picture
upload-video:
name: upload_video
callback: upload_video_service
routing_keys:
- video
upload-stats:
name: upload_stats
callback: upload_stats