Java 8 Spring集成-@过滤器丢弃通道和/或ThroweExceptionInRejection是否被忽略?
我有一个基于java DSL的spring集成(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 {
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配置。谢谢你的帮助!