[英]Spring Integration Java DSL: Remote filter is not applied on handle method
[英]spring integration dsl filter instead filter method annotation
如何从过滤器注释方法切换到Spring集成Java DSL过滤器。 如何调用过滤器方法?
IntegrationFlows.from("removeSession")
// remove chat session from user sessions map
.handle("sessionLogService", "removeChatSession")
// continue and remove user from ehcache only if user have no more opened sessions.
.filter(/* what's going here? */)
.get();
而是过滤注释。
@Filter(inputChannel = "userGoOfflineFilter", outputChannel = "userGoOffline")
public boolean notifyOnlyIfLastConnectionClosed(SecureUser secureUser) {
ChatUser user = sessionUtils.getChatUser(secureUser.getId());
if(user == null || user.getChatSessionIds() == null || user.getChatSessionIds().isEmpty())
return true;
LOGGER.debug(secureUser.getFirstName()+": Offline message not sent yet");
return false;
}
IntegrationFlowDefinition
上有几种重载的.filter()
方法。 看看javadocs,但是
filter("expression");
采用SpEL表达式。 它可能是一个bean引用,例如
.filter("@myFilter.notifyOnlyIfLastConnectionClosed('payload')")
或者您可以使用GenericSelector
...
.filter(SecureUser.class, u -> u == null || u.getChatSessionIds() == null || u.getChatSessionIds().isEmpty())
(java 8 lambda)或
.filter(new GenericSelector<SecureUser>() {
@Override
public boolean accept(SecureUser u) {
return u == null || u.getChatSessionIds() == null || u.getChatSessionIds().isEmpty();
}
})
(java 6/7)。
等等
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.