我正在使用spring集成,我需要按10k打包消息组。我不想将它存储到List中,因为后来10k可能变得更大,持久存储也不是我的选择。我只是想让几个线程将消息发送到单个线程中,我可以将它们计数并将磁盘写入包含10k行的文件中。在计数器达到10k后,我将新文件集计数器创建为零,依此类推。它可以正常使用直接通道,但如何告诉几个线程(我正在使用
<int:dispatcher task-executor="executor" />
)将消息发送到单个线程?感谢
答案 0 :(得分:0)
您可以使用QueueChannel
来完成任务。任何线程都可以同时向它发送消息。另一方面,您应该根据您的要求,使用PollingConsumer
轮询器配置fixed-delay
- 单线程。我的意思是具有fixed-delay
的轮询器和DirectChannel
下游的所有内容将仅在单线程中完成。因此,您可以在那里达到计数和翻转逻辑。
没有什么可以向您展示,因为该配置是直截了当的:不同的服务将消息发送到同一QueueChannel
。 fixed-delay
轮询器确保为您提供单线程读取。