【问题标题】:Spring integration Splitter task executionSpring集成Splitter任务执行
【发布时间】:2015-06-19 07:50:14
【问题描述】:

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

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

<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 文件中尽可能简单地做到这一点。

提前致谢

【问题讨论】:

    标签: java spring-integration splitter


    【解决方案1】:

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

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

    <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>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      相关资源
      最近更新 更多