当前位置: 首页 > 知识库问答 >
问题:

Spring集成拆分器任务执行

萧无尘
2023-03-14

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

我有一个入站通道适配器,用于读取目录,然后是一个拆分器,用于将文件拆分为行,最后是一个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" />

我想每秒钟发一封信

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

提前谢谢

共有1个答案

阙星渊
2023-03-14

将消息放入队列通道,并使用轮询器每秒发送一次。

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>

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

 类似资料:
  • 我正在开发一个现有的Spring集成代码,该代码被卡住了。 代码: 在网上做了一些搜索之后,下面是我对代码的理解。如果我错了,请纠正我: 拆分器输出通道是容量为25的队列通道,这意味着它将从查询中获取一批25条记录。 现在,service activator中编写的代码将每100毫秒轮询一次,并从队列通道中获取25条消息。Service Activator与task executor一起在多线程环

  • 目前,我正在与spring integration合作开发新的应用程序,并启动了poc,以了解如何处理故障案例。在我的应用程序中,spring integration将接收来自IBM mq的消息,并根据消息类型验证头信息和到不同队列的路由。传入的消息可能是批量消息,所以我使用了spring integration的拆分器和聚合器,并且对技术工作流程有很好的进展和控制。目前我面临的问题很少,我们有I

  • 我有一个队列通道和一个链,轮询器和任务执行器在该通道上“监听”,并行执行一些处理。我想做的是以这样一种方式配置它,我可以根据一些逻辑/属性路由特定消息,以确保特定消息“类型”始终由任务执行器的特定线程处理。 示例:消息,其中:

  • 使用Spring Integr中的拆分器,我拆分了从数据库中的表中选择的数据行。每条消息完成处理后,我想像旧消息一样将每条消息聚合到一条消息中。我该怎么办?我不知道拆分器拆分了多少条消息。我只知道拆分消息头中的相关ID。即使我聚合消息,我也无法制定发布策略。 我如何解决这个问题? 以及是否有任何方法可以使用jdbc-out站网关或jdbc-out站通道适配器一次插入多行数据,而无需使用拆分器插入每

  • 我无法找到必要的信息,无论是在文档中还是在这里已经存在的问题中,这就是为什么我自己创建了一个(我还不能在类似的帖子下提问)。 我需要知道的是Spring任务执行器和调度器之间的关系。我当前的配置如下所示: 我不确定的是它是如何工作的。“谁”运行我的任务?是调度器,因为任务是和他一起安排的吗?或者调度器只是创建它们,放在队列中,由执行者运行它们? 如果没有,运行的是scheduler,我必须在特定类