我不知道这个问题是关于 spring-integration、spring-integration-dsl 还是两者都有,所以我只添加了 2 个标签...
今天花了不少时间,先用过滤器做一个简单的流程
StandardIntegrationFlow flow = IntegrationFlows.from(...)
.filter(messagingFilter)
.transform(transformer)
.handle((m) -> {
(...)
})
.get();
消息过滤器是消息选择器的一个非常简单的实现。到目前为止一切顺利,没有花太多时间。但是后来我想记录一条消息,以防 MessageSelector 返回错误,这就是我卡住的地方。
很长一段时间后,我最终得到了这个:
StandardIntegrationFlow flow = IntegrationFlows.from(...)
.filter(messagingFilters, fs -> fs.discardFlow( i -> i.channel(discardChannel()))
.transform(transformer)
.handle((m) -> {
(...)
})
.get();
(...)
public MessageChannel discardChannel() {
MessageChannel channel = new MessageChannel(){
@Override
public boolean send(Message<?> message) {
log.warn((String) message.getPayload().get("msg-failure"));
return true;
}
@Override
public boolean send(Message<?> message, long timeout) {
return this.send(message);
}
};
return channel;
}
这既丑陋又冗长,所以问题是,我在这里做错了什么,我应该如何以更好、更清洁、更优雅的解决方案来做呢?
干杯。