我想让我的 Spring 集成流程对于通过网关传入的不同类型的请求通用,并且我想要重载方法,并希望为通过网关传入的特定消息调用特定的重载方法。
flow.handle(validatorService, "validateRequest")
类似于上面的代码,在 validatorService 内部,我有几个重载方法来满足进入此流程的不同请求。但是,如果我想与有效负载一起向方法发送另一个参数怎么办?那我该怎么办呢。
@Configuration
public class IntegrationConfiguration {
@Autowired LionsServiceImpl lionsService;
long dbId = new SequenceGenerator().nextId();
// Main flow
@Bean
public IntegrationFlow flow() {
return flow ->
flow.handle(validatorService, "validateRequest")
.split()
.channel(c -> c.executor(Executors.newCachedThreadPool()))
.scatterGather(
scatterer ->
scatterer
.applySequence(true)
.recipientFlow(flow1())
.recipientFlow(flow2())
.recipientFlow(flow3()),
gatherer ->
gatherer
.releaseLockBeforeSend(true)
.releaseStrategy(group -> group.size() == 2))
.aggregate(prepareSomeRequest())
.to(getDec());
}
//网关
@Gateway(requestChannel = "flow.input")
void processLionRequest(
@Payload Message lionRequest, @Header("sourceSystem") SourceSystem sourceSystem);
所以如果你看到flow.handle(validatorService, "validateRequest")
我们有一个 validatorService 类,它接受 LionRequest、CatRequest 并动态调用重载方法。
同样,我有一个重载方法,它接受 2 个参数,一个是 LionRequest 或 CatRequest,另一个是来自标头或某个变量的值。
我的重载方法如下所示 -
public LionRequest save(LionRequest lionreq, String dbID){}
public CatRequest save(CatRequest catReq, String dbID){}..
这样我就可以将 LionRequest 或 CatRequest 传递给网关,并且只需从类中调用 save 方法,并且应该动态调用 LionRequest/CatRequest 重载方法。
请建议。一个示例代码会有所帮助