我正在通过单个进程(多处理(启动rabbitmq消费者(同一队列(的多个实例。在中断时,我希望所有使用者都能正常关闭。我的意思是,如果从队列中获取的进程已经在运行,请让它完成,然后停止使用更多请求并停止队列。
有没有办法知道队列是否正在执行某些东西,然后等待它完成,然后停止队列?
RabbitMQ 团队监控rabbitmq-users
邮件列表,并且只偶尔回答 StackOverflow 上的问题。
有没有办法知道队列是否正在执行某些东西,然后等待它完成,然后停止队列?
不,没有办法知道这一点。您应该使用消息确认。当您希望停止使用时,可以调用basic_cancel
,然后退出该使用者进程。RabbitMQ 只会将这些消息视为已确认已传递,因此您不必担心丢失消息。