我们使用 Spring Boot AMQP 来处理消息。我们有多个队列,其中一些队列依赖于其他队列。我想确保队列等待其他人完成他们的工作。例如:
假设我有 2 个队列(A 和 B),每个队列有 20 条消息等待处理。我想让B等A处理完20条消息再开始工作。
有没有内置的方法可以实现这一点?
我们尝试了AMQP的优先级但没有成功。
您可以将
autoStartup
上的 false
设置为 @RabbitListener
。 (您可以使用 id
bean 通过其 RabbitListenerEndpointRegistry
停止/启动容器)。如果您不使用注释并自己创建容器 bean,那么只需使用容器 bean 来管理其生命周期。
然后,为
ListenerContainerIdleEvent
启用事件发布;然后您可以检测容器何时空闲,停止它,然后启动下一个容器。
参见https://docs.spring.io/spring-amqp/docs/current/reference/html/#idle-containers