You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Integration配置RabbitMQ按间隔读队列消息不生效求助

配置失效原因

你使用的SimpleMessageListenerContainer属于推模式消费容器:RabbitMQ服务端会主动将队列中存在的消息实时推送给已注册的消费者,这一逻辑不受receiveTimeout参数控制。
你查到的receiveTimeout参数是给拉模式的AmqpTemplate.receive()方法使用的,在推模式容器中该参数仅控制消费者线程空闲时的内部等待超时,和消息拉取间隔完全无关,因此无法实现每15分钟读取一次的需求。

消费者单次活跃时长

SimpleMessageListenerContainer采用长连接常驻机制,消费者启动后会一直和RabbitMQ服务端保持连接,只要容器不停止,消费者会持续处于活跃状态接收推送消息。

后续方案说明

你后续使用Amqp.inboundPolledAdapter的方案是正确的,这是Spring Integration提供的拉模式消费适配器,可以通过轮询配置实现按间隔读取消息的需求:

  • 你当前配置的是每20秒触发一次轮询,每次轮询拉取队列中所有消息(maxMessagesPerPoll(-1)),如果要改成15分钟间隔,只需要将Pollers.fixedDelay(20_000)修改为Pollers.fixedDelay(900_000)即可。
  • 如果需要控制每次轮询拉取的消息数量,将maxMessagesPerPoll修改为对应数值即可,比如设为1代表每次轮询最多拉1条消息。

内容的提问来源于stack exchange,提问作者Sanal M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:36:02