使用Spring Integration进行事务性IMAP邮箱访问

时间:2012-12-31 09:29:42

标签: spring transactions imap javamail spring-integration

我有一个非常类似的要求,就像here中提到的那样,但我使用Imap如下,我的spring-integration版本是1.0.4:

<mail:inbound-channel-adapter id="imapAdapter"
                                      store-uri="imaps://user:pass@domain:993/inbox"                                    
                                      channel="recieveEmailChannel"
                                      auto-startup="true"                                      
                                      java-mail-properties="javaMailProperties">
        <int:poller> 
        <int:interval-trigger initial-delay="1000" interval="2000"
        fixed-rate="true"/>
        <int:transactional transaction-manager="transactionManager" propagation="REQUIRED"/>
        </int:poller>
    </mail:inbound-channel-adapter>   
<int:channel id="recieveEmailChannel" />        
<int:service-activator input-channel="recieveEmailChannel" ref="emailReceiverService" method="receive"/>
<bean id="emailReceiverService" class="com.mydomain.email.in.DefaultEmailReceiverUtilService">
</bean>

问题 Imap是否支持Spring-integration 1.0.4中的事务处理?

2 个答案:

答案 0 :(得分:1)

相同的答案 - 邮件服务器不支持交易。

答案 1 :(得分:1)

如文档中所述,事务轮询器不会构成本质上非事务性的资源事务。如果使用上游资源(例如JDBC),则事务将随poll一起启动,并在线程完成其工作时提交。

从2.2.0开始,邮件轮询器上的事务元素允许您使用此类事务SYNCHRONIZE某些操作。例如,这允许您在事务提交时删除电子邮件,但如果它回滚则将其保留在邮箱中。

同样,这不会使邮件成为交易。