java - Spring集成Splitter任务执行

标签 java spring-integration splitter

我正在开发 Spring Integration 应用程序。

我有一个读取目录的入站 channel 适配器 然后是一个将文件分割成行的分割器 最后是发送线路的 udp 出站 channel 适配器

<int-file:inbound-channel-adapter prevent-duplicates="false"
          id="filesIn" directory="file:input" channel="inputFiles" />

<int:splitter  input-channel="inputFiles" output-channel="udpChannel_11111"
         expression="T(org.apache.commons.io.FileUtils).lineIterator(payload)" />

<!-- Define UDP outbound channel -->
<int:channel id="udpChannel_11111" />
<int-ip:udp-outbound-channel-adapter channel="udpChannel_11111"
        host="192.168.0.1" port="11111" />

我想每秒发送一行

我可以通过定义自己的拆分器并每次读取一行时等待 1 秒来完成此操作,但我想知道是否可以在 xml 文件中尽可能简单地完成此操作。

提前致谢

最佳答案

将消息放入 QueueChannel 中并使用轮询器每秒发送一次。

UDP channel 适配器当前不支持轮询器,但您可以使用桥接器...

<int:splitter  input-channel="inputFiles" output-channel="udpChannel_11111"
     expression="T(org.apache.commons.io.FileUtils).lineIterator(payload)" />

<int:channel id="toBridge">
    <int:queue />
</int:channel>

<int:bridge input-channel="toBridge" output-channel="udpChannel_11111">
    <int:poller fixed-delay="1000" max-messages-per-poll="1" />
</int:bridge>

但请记住,文件将很快加载到队列 channel 中,如果文件很大,您可能会遇到内存问题。

关于java - Spring集成Splitter任务执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30932793/

相关文章:

javascript - Kendo UI 在拆分器上附加 Pane

java - 当其他窗口处于 Activity 状态时,我的 java 程序卡住

Java 扩展集合过滤

java - Hadoop 错误 : Could not find or load main class class path TestJava

java - 带条件的 Spring Integration header 值路由器

winapi - Win32 分割器控件

java - Java 中扩展名为 .00x 的文件合并

java - 重新加载共享首选项

java - spring boot 使用 kafka 进行分布式处理

java - Spring-Integration:如何通过网关触发文件读取