任何人都可以共享相当于邮件附件样本的DSL吗?

时间:2015-04-17 20:50:18

标签: spring-integration dsl

我正在寻找第一次使用spring集成:Spring集成示例中的Mail Attachment Sample是一个良好的开端,我今天已经为了我自己的目的而扩展,并且令人惊讶。

然而,当我在滚动时,我更愿意使用DSL,但是在研究DSL示例后,由于它们非常复杂,我有点迷失了。

如果有人可以共享任何弹簧集成示例的DSL重新实现,或者提供有关如何重新实现邮件附件示例的一些提示,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

目前还没有该版本的DSL版本,但也许一个很好的起点是DSL mail test cases

答案 1 :(得分:0)

我成功地使用java 1.7重新实现了DSL。以下是有趣的内容:

@Bean
public IntegrationFlow polledEmails() {

    return IntegrationFlows
        .from(
            Mail.imapInboundAdapter( "imaps://" + user + ":" + password + "@imap.gmail.com:" + imapPort + "/inbox" )
                .javaMailProperties( javaMailProperties() )
                .shouldDeleteMessages( true )
        )
        .channel( MessageChannels.direct( "incomingEmail") )
        .get();
}

@Bean
public IntegrationFlow extractAttachments() {

    return IntegrationFlows
        .from( "incomingEmail" )
        .transform( new EmailTransformer() , "transformit" )
        .split( new EmailSplitter() , "splitIntoMessages" )
        .channel( MessageChannels.direct( "attachments") )
        .get();
}

@Bean
public IntegrationFlow writeAttachmentAsFile() {

    return IntegrationFlows
        .from( "attachments" )
        // save attachment to file
        .handle( 
            Files.outboundAdapter( "'target/out/' + headers.directory" )
            .autoCreateDirectory( true ) )
        .get();
}

@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata poller() {
    return Pollers.fixedDelay( 5000 ).get();
}

private Properties javaMailProperties() {

    final Properties properties = new Properties();
    properties.put( "mail.store.protocol" , "pop3" );
    properties.put( "mail.debug" , "false" );

    return properties;
}