【问题标题】:spring integration dsl filter instead filter method annotationspring 集成 dsl 过滤器代替过滤器方法注释
【发布时间】:2015-02-06 17:47:35
【问题描述】:

如何从过滤器注释方法切换到 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;
    }

【问题讨论】:

    标签: java filter spring-integration dsl


    【解决方案1】:

    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)。

    等等

    【讨论】:

    • 非常感谢这个 .filter("@myFilter.notifyOnlyIfLastConnectionClosed('payload')") 工作完美,我喜欢它。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 2015-04-07
    • 2012-03-07
    • 2013-11-11
    • 1970-01-01
    相关资源
    最近更新 更多