我是spring Integration的新手。在spring integration的配置中,我有:
<int:chain input-channel="channel1_2" output-channel="channel1_3">
<int:service-activator>
<bean class="com.csv.CSVEntreprise"/>
</int:service-activator>
</int:chain>
<int:channel id="channel1_3"/>
<int:recipient-list-router id="id-entreprise" input-channel="channel1_3">
<int:recipient channel="channel1_3TRUE" />
<int:recipient channel="channel1_3FALSE"/>
</int:recipient-list-router>
<int:channel id="channel1_3TRUE"/>
<int:channel id="channel1_3FALSE"/>
在CSVEntreprise类中,我用布尔返回定义了方法,我希望当它返回true时使用通道channel1_3TRUE,当它返回false时使用通道channel1_3FALSE?
您可能需要考虑使用标头值路由器(http://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html)。
您可以使用CSVEnterprise bean来设置MessageHeaders中的布尔值。
您的@ServiceActivator
应该设置标头的值:
return MessageBuilder.withPayload(message)
.setHeader("MY_HEADER", Boolean.FALSE).copyHeadersIfAbsent(headers).build();
然后,使用一个标头值路由器来确定将订单路由到哪个通道。
<int:header-value-router input-channel="channel1_3" header-name="MY_HEADER" id="headerValueRouter">
<int:mapping value="true" channel="channel1_3TRUE"/>
<int:mapping value="false" channel="channel1_3FALSE" />
</int:header-value-router>
我对SI是个新手,但现在已经读了很多书了。我必须从flow再打一个电话,那已经实现了。我需要这个调用是不阻塞的,这样链就不会等待它的执行-它被发送到另一个系统,可能是关闭的。 我需要向2个通道发送一条消息,所以我不带任何条件地使用了收件人-列表-路由器。 在完成后,将调用。这很好,但问题是,输入也会等待完成,即使我使用的是Executor通道也应该是异步的。 和,其中前缀来自http://www.
我使用的是spring Boot2.2.4-Release和spring integration 5.2.3,我使用的是IntegrationFlow和DSL,因为我需要配置几个IMAP服务器。 所以我写了这段代码: 其中是 通过设置,我可以在处理程序组件中处理,但我有一些问题。 null 我不知道是否应该做什么来告诉框架关闭文件夹 谁能给我提点建议吗? 谢谢你
我有一个解压缩和文件的要求,并处理它的内容。在zip文件中,可以有两种类型的文件个人或公司。可以通过文件名区分的。在处理完所有文件后,它应该调用另一个程序模块,并将处理后的文件存档在不同的位置。希望使用Spring集成相同。我试图通过下面的代码来实现这一点,但它在基于文件名的路由时产生了问题。我使用的是JDK 8,Spring 5 例外 下面是整个代码段
有时你需要在一个表单中以单一的形式处理多个模型。例如,有多个设置, 每个设置存储为一个 name-value,并通过 Setting 活动记录 模型来表示。这种形式也常被称为“列表输入”。与此相反, 处理不同模型的不同类型,在 多模型同时输入章节中介绍。 下面展示了如何在 Yii 中收集列表输入。 在三种不同的情况下,所需处理的略有不同: 从数据库中更新一组固定的记录 创建一个动态的新记录集 更新
我有一个队列通道和一个链,轮询器和任务执行器在该通道上“监听”,并行执行一些处理。我想做的是以这样一种方式配置它,我可以根据一些逻辑/属性路由特定消息,以确保特定消息“类型”始终由任务执行器的特定线程处理。 示例:消息,其中:
基于spring集成的转换器使用来自一个系统的消息,检查、转换并将其发送到另一个系统。 如果目标系统关闭,我们将停止入站适配器,但也希望在本地保留或转发当前“正在运行”的转换消息。为此,只需将消息从正常输出通道动态地重新路由到某个“备份”通道。 在文档中,我只找到了根据消息头路由消息的选项(因此,在流程之前的某个步骤中,一旦targer系统不可用,我将不得不动态添加这些消息),或者基于有效负载类型