我目前正在使用 IntegrationFlow 在 RabbitMq 消息到达队列时触发作业执行。IntegrationFlow 的 AmqpInboundChannelAdapter 和作业的第一步的 ItemReader 都配置为从同一个队列中读取消息。
我遇到的问题是 IntegrationFlow 的 AmqpInboundChannelAdapter 读取 RabbitMQ 消息,然后 ItemReader 无法再找到该消息。可能是因为 IntegrationFlow 在 Job 启动之前确认了消息。
有没有办法阻止 IntegrationFlow 消费/确认消息,将其留在队列中,以便 ItemReader 可以作为预期工作?我尝试配置 AmqpInboundChannelAdapter 以重新排队消息,但这只会导致适配器重新读取它自己的消息的无限循环。
这个问题在一定程度上描述了我的问题,除了我没有做任何处理,我只是试图将 IntegrationFlow 用作 JobLaunching 触发器。因此,该解决方案似乎是一种反模式。
Spring Batch Integration - 传递数据 b/w 集成和批处理
任何帮助将不胜感激