Spring 集成 DSL Scatter-Gatherer:为什么 applySequence(true) 不是默认值?
Spring Integration DSL Scatter-Gatherer: Why isn't applySequence(true) the default?
我看到的所有 Spring Integration DSL Scatter-Gatherer 的例子都在分散器上明确设置了 .applySequence(true)
。
例如像这样:
@Bean
public IntegrationFlow helloFlow() {
return IntegrationFlows
.from(Http.inboundChannelAdapter("hello").get())
.scatterGather(s -> s
.applySequence(true)
.recipientFlow(f -> f.handle((m, h) -> 33))
.recipientFlow(f -> f.handle((m, h) -> 444))
)
.split()
.log()
.get();
}
如果我省略 .applySequence(true)
我得到
java.lang.IllegalStateException: Null correlation not allowed. Maybe the CorrelationStrategy is failing?
为什么在这种情况下需要序列?
如果在很多情况下都需要它,为什么 .applySequence(true)
不是默认设置,如果出于某种原因需要,可以选择将其显式设置为 false ?您什么时候明确希望将其设置为 false?
此组件的分散器部分完全基于收件人列表路由器,默认情况下该选项 false
随附。因此,为了一致性和运行时优化,我们在 scatter-gather 中也将其保持为 false:https://docs.spring.io/spring-integration/docs/current/reference/html/message-routing.html#router-implementations-recipientlistrouter。在现实世界中,当收集到的消息返回那些生成的序列细节时,它确实是后置情况 headers。通常,收集器配置为自定义关联和发布策略。老实说,它是 applySequence
更多的演示和示例功能。另外,不要忘记消息不变性,我们可以选择强制框架创建新消息以添加序列详细信息 headers。
我看到的所有 Spring Integration DSL Scatter-Gatherer 的例子都在分散器上明确设置了 .applySequence(true)
。
例如像这样:
@Bean
public IntegrationFlow helloFlow() {
return IntegrationFlows
.from(Http.inboundChannelAdapter("hello").get())
.scatterGather(s -> s
.applySequence(true)
.recipientFlow(f -> f.handle((m, h) -> 33))
.recipientFlow(f -> f.handle((m, h) -> 444))
)
.split()
.log()
.get();
}
如果我省略 .applySequence(true)
我得到
java.lang.IllegalStateException: Null correlation not allowed. Maybe the CorrelationStrategy is failing?
为什么在这种情况下需要序列?
如果在很多情况下都需要它,为什么 .applySequence(true)
不是默认设置,如果出于某种原因需要,可以选择将其显式设置为 false ?您什么时候明确希望将其设置为 false?
此组件的分散器部分完全基于收件人列表路由器,默认情况下该选项 false
随附。因此,为了一致性和运行时优化,我们在 scatter-gather 中也将其保持为 false:https://docs.spring.io/spring-integration/docs/current/reference/html/message-routing.html#router-implementations-recipientlistrouter。在现实世界中,当收集到的消息返回那些生成的序列细节时,它确实是后置情况 headers。通常,收集器配置为自定义关联和发布策略。老实说,它是 applySequence
更多的演示和示例功能。另外,不要忘记消息不变性,我们可以选择强制框架创建新消息以添加序列详细信息 headers。