Java Spring集成-转发原始消息并在处理后回复

Java Spring集成-转发原始消息并在处理后回复,java,spring,messaging,spring-integration,Java,Spring,Messaging,Spring Integration,我有一些实例需要Spring集成组件(服务激活器)接收带有文件负载的消息,并生成一些输出。此外,一旦组件产生了这个输出,我想将原始文件消息传递到另一个通道 用例是,我有一些文件进入,被发送到两个并行处理流(归档到S3,解析内容)。感谢Gary Russel,我在原始文件消息中使用了publish-subscribe频道的apply sequence=“true”行为。当两个流都处理完一个文件时,它们应该将带有原始相关头的文件消息放在“已处理”通道上,聚合器从该通道对它们进行分组,当两个流都已聚合

我有一些实例需要Spring集成组件(服务激活器)接收带有文件负载的消息,并生成一些输出。此外,一旦组件产生了这个输出,我想将原始文件消息传递到另一个通道

用例是,我有一些文件进入,被发送到两个并行处理流(归档到S3,解析内容)。感谢Gary Russel,我在原始文件消息中使用了publish-subscribe频道的
apply sequence=“true”
行为。当两个流都处理完一个文件时,它们应该将带有原始相关头的文件消息放在“已处理”通道上,聚合器从该通道对它们进行分组,当两个流都已聚合时,它们应该放在一个通道上,该通道为删除文件的服务激活器提供信息

总之,我希望服务激活器将其输出放在一个通道上,同时将它收到的原始消息放在另一个通道上

更新


我最好使用
publish-subscribe
,同时订阅服务器按
order
属性指定的顺序连续执行?

在service activator之前使用无线窃听复制消息并将其发送到另一个频道。

我使用的是一个
publish-subscribe
频道,没有指定
任务执行器
,然后在每个订阅服务器上放置
订单
属性

第一个订阅者做它自己的事情,并发出它自己不同的输出(在我的例子中是解析的文件内容);我通过使用
ExecutorChannel
在它的下游创建了这个异步的后续部分


第二个订阅服务器直到第一个订阅服务器完成后才执行,并获得相同的输入消息(在本例中为文件)。我让第二个订阅者成为一个
桥接器
,它将
文件
推送到通道,该通道将导致“我完成的事情”处理管道准备删除。

为了更大的灵活性,SI 2.2引入了通过通知机制向端点添加行为的功能,提供的一个标准建议是ExpressionEvaluationRequestHandlerAdvice,它允许您根据(例如service activator)调用是否成功采取不同的操作

例如,关联的示例应用程序显示了如何在通过FTP发送失败后重命名文件,或者在FTP操作成功时删除文件


.

谢谢,但我需要等待service activator完成,然后才能发送原始邮件。我认为没有现成的组件可以执行此操作。将频道作为引用注入serviceActivator,并以编程方式发送消息。遗憾的是,博客文章的链接不再有效。但回购协议仍然有效