丢弃 Spring 集成 DSL 服务激活器中的消息
Discarding a Message within a Spring Integration DSL Service Activator
有没有一种方法可以从使用 Spring 集成 DSL .handle()
方法定义的 Spring 集成服务激活器中丢弃消息?
更具体地说,假设下面的 IntegrationFlow 定义...
public IntegrationFlow sampleFlow() {
return IntegrationFlows
.from("someChannel")
.handle(someServiceClass::someMethod)
.get();
}
有没有办法根据 someMethod
定义中的某些评估丢弃消息?理想情况下,我想执行一些日志记录然后丢弃。
我发现从 someMethod
返回 null
似乎可以有效地结束流程,但我不确定这是否是最 graceful/correct 的解决方案。如果这是推荐的解决方案,那很好。
没错。停止处理从服务方法返回 null
确实是非正式模式。我们甚至以非官方的方式记录了它:https://docs.spring.io/spring-integration/docs/5.2.3.RELEASE/reference/html/messaging-endpoints.html#service-activator-namespace
The service activator is one of those components that is not required to produce a reply message. If your method returns null or has a void return type, the service activator exits after the method invocation, without any signals.
您还可以通过 filter()
实现丢弃并记录目标。
有没有一种方法可以从使用 Spring 集成 DSL .handle()
方法定义的 Spring 集成服务激活器中丢弃消息?
更具体地说,假设下面的 IntegrationFlow 定义...
public IntegrationFlow sampleFlow() {
return IntegrationFlows
.from("someChannel")
.handle(someServiceClass::someMethod)
.get();
}
有没有办法根据 someMethod
定义中的某些评估丢弃消息?理想情况下,我想执行一些日志记录然后丢弃。
我发现从 someMethod
返回 null
似乎可以有效地结束流程,但我不确定这是否是最 graceful/correct 的解决方案。如果这是推荐的解决方案,那很好。
没错。停止处理从服务方法返回 null
确实是非正式模式。我们甚至以非官方的方式记录了它:https://docs.spring.io/spring-integration/docs/5.2.3.RELEASE/reference/html/messaging-endpoints.html#service-activator-namespace
The service activator is one of those components that is not required to produce a reply message. If your method returns null or has a void return type, the service activator exits after the method invocation, without any signals.
您还可以通过 filter()
实现丢弃并记录目标。