我有一个带有单个队列的 RabbitMQ 交换。我希望创建一个运行多个线程并尽快通过该队列工作的守护进程。
“工作”涉及与外部服务的通信,因此每个消费者内部都会发生相当多的阻塞。因此,我想让多个线程都处理来自同一个队列的消息。
我可以通过在我的主线程上使用队列来实现这一点,然后将传入的工作转移到其他线程池中,但是有没有办法启动多个消费者,每个消费者都在自己的线程上下文中?
我有一个带有单个队列的 RabbitMQ 交换。我希望创建一个运行多个线程并尽快通过该队列工作的守护进程。
“工作”涉及与外部服务的通信,因此每个消费者内部都会发生相当多的阻塞。因此,我想让多个线程都处理来自同一个队列的消息。
我可以通过在我的主线程上使用队列来实现这一点,然后将传入的工作转移到其他线程池中,但是有没有办法启动多个消费者,每个消费者都在自己的线程上下文中?
看看celery——它被设计用来对来自 AMPQ 代理的任务进行排队和处理(但也可以与其他排队后端一起使用)。它处理多进程或多线程并发,并使得创建和使用任务变得非常容易。