Java 8 Spring集成-@过滤器丢弃通道和/或ThroweExceptionInRejection是否被忽略?

Java 8 Spring集成-@过滤器丢弃通道和/或ThroweExceptionInRejection是否被忽略?,java-8,spring-integration,Java 8,Spring Integration,我有一个基于java DSL的spring集成(spring集成java DSL:1.0.1.RELEASE)流程,它通过过滤器过滤掉某些消息。Filter组件在过滤不需要的消息方面工作正常 现在,我想设置一个discardChannel=“discard.ch”,但是,当我设置discard频道时,过滤掉的消息似乎从未真正进入指定的discardChannel。你知道为什么会这样吗 My@Filter注释类/方法: @Component public class MessageFilter {

我有一个基于java DSL的spring集成(
spring集成java DSL:1.0.1.RELEASE
)流程,它通过
过滤器过滤掉某些消息。
Filter
组件在过滤不需要的消息方面工作正常

现在,我想设置一个
discardChannel=“discard.ch”
,但是,当我设置discard频道时,过滤掉的消息似乎从未真正进入指定的
discardChannel
。你知道为什么会这样吗

My@Filter注释类/方法:

@Component
public class MessageFilter {

    @Filter(discardChannel = "discard.ch")
    public boolean filter(String payload) {
        // force all messages to be discarded to test discardChannel
        return false;
    }

}
我的集成流类:

@Configuration
@EnableIntegration
public class IntegrationConfig {

    @Autowired
    private MessageFilter messageFilter;

    @Bean(name = "discard.ch")
    public DirectChannel discardCh() {
        return new DirectChannel();
    }

    @Bean
    public IntegrationFlow inFlow() {

        return IntegrationFlows
        .from(Jms.messageDriverChannelAdapter(mlc)
        .filter("@messageFilter.filter('payload')")
        ...
        .get();
    }

    @Bean
    public IntegrationFlow discardFlow() {
        return IntegrationFlows
        .from("discard.ch")
        ...
        .get();
    }
}

我已经打开了spring调试,但我看不到丢弃的消息实际上要去哪里。这就好像我在
@过滤器上设置的
丢弃频道
根本没有被拾取一样。你知道为什么会这样吗?

当使用基于注释的配置时,注释配置是适用的

使用dsl时,注释不相关;您需要在DSL本身中配置
.filter

.filter("@messageFilter.filter('payload')", e -> e.discardChannel(discardCh())

您好,Gary,我已经按照您的建议在DSL代码中配置了丢弃通道,效果很好。我似乎总是混淆基于SpringJava的注释配置和SpringJavaDSL配置。谢谢你的帮助!