Java 在Spring Integration中,从不同线程中的多个通道向单个通道发送消息

Java 在Spring Integration中,从不同线程中的多个通道向单个通道发送消息,java,multithreading,spring,spring-integration,Java,Multithreading,Spring,Spring Integration,我有一个从多个来源接收数据的系统。clienta是我没有控制权的第三方客户机,它处理线程池中的所有数据源。我可以注册回调,回调将从不同的线程触发。我正在使用网关将数据发送到不同的通道。在处理每个通道后,我想将每个通道转换为单个通道上的消息。这是因为对于来自不同来源的数据,大多数处理是相同的。 下面是一个示例xml 当两个转换器输出到同一个通道时,由于转换器在不同的线程上运行,是否会出现任何并发问题? 是否可能只有一个线程处理通道“c”?否则,在同一通道中处理多个线程的建议做法是什么?框架中没有此

我有一个从多个来源接收数据的系统。clienta是我没有控制权的第三方客户机,它处理线程池中的所有数据源。我可以注册回调,回调将从不同的线程触发。我正在使用网关将数据发送到不同的通道。在处理每个通道后,我想将每个通道转换为单个通道上的消息。这是因为对于来自不同来源的数据,大多数处理是相同的。 下面是一个示例xml

当两个转换器输出到同一个通道时,由于转换器在不同的线程上运行,是否会出现任何并发问题?
是否可能只有一个线程处理通道“c”?否则,在同一通道中处理多个线程的建议做法是什么?

框架中没有此类并发问题-但是,服务激活器等调用的代码必须是线程安全的

如果出站通道适配器调用您的POJO,它必须是线程安全的。如果它是一个框架适配器,例如http等,那么它是线程安全的


如果无法使代码线程安全,可以使用带有单线程任务执行器的for通道c在单线程上运行流。

在调用出站通道适配器之前,我必须在通道c上执行一系列转换/充实/路由。我所有的POJO方法都是线程安全的。那么我可以在通道c上使用,而不用担心任何线程问题吗?我尝试了一个示例程序,其中多个线程向通道a和b发送消息,通道c上的接收POJO在配置为具有集合队列时始终具有相同的线程id