Java 聚合没有列表的消息

Java 聚合没有列表的消息,java,spring,spring-integration,Java,Spring,Spring Integration,我使用的是spring集成,我需要按10k打包一组消息。我不想将其存储到列表中,因为以后10k可能会变得更大,持久存储也不是我的选择。我只希望几个线程将消息发送到一个线程中,在这个线程中我可以对它们进行计数,并将它们写入到包含10k行的文件的磁盘中。计数器达到10k后,我创建新文件,将计数器设置为零,依此类推。它可以与direct channel一起工作,但是如何分辨几个线程(我正在使用 )将消息发送到单个线程?谢谢您可以使用队列频道完成任务。任何线程都可以同时向它发送消息。另一方面,您只需

我使用的是spring集成,我需要按10k打包一组消息。我不想将其存储到列表中,因为以后10k可能会变得更大,持久存储也不是我的选择。我只希望几个线程将消息发送到一个线程中,在这个线程中我可以对它们进行计数,并将它们写入到包含10k行的文件的磁盘中。计数器达到10k后,我创建新文件,将计数器设置为零,依此类推。它可以与direct channel一起工作,但是如何分辨几个线程(我正在使用



)将消息发送到单个线程?谢谢

您可以使用
队列频道
完成任务。任何线程都可以同时向它发送消息。另一方面,您只需根据需要使用
固定延迟
轮询器-单线程来配置
轮询消费者
。我的意思是,具有
固定延迟的轮询器和具有
DirectChannel
的所有下游操作将仅在单个线程中完成。因此,您的计数和滚动逻辑可以在那里实现


没有什么要向您展示的,因为该配置是直接的:不同的服务将消息发送到相同的
QueueChannel
fixed delay
轮询器可确保您的单线程阅读。

谢谢您的回答,但fixed delay不是会延迟接收每条消息吗?即,即使我将fixed delay设置为10,每条消息都会延迟10毫秒进行轮询吗?我有很多数据,我需要尽快处理。我想知道原子积分计数器。这应该可以在多线程环境中工作,因为bean在每个应用程序上下文中都是单音的,不是吗?哦,我意识到我可以设置delay=0。所以我相信这就是我需要的,谢谢
  <int:dispatcher task-executor="executor" />