触发spring-integration int-mail的合适方法是什么:inbound-channel-adapter?

时间:2013-11-21 09:25:43

标签: java spring-integration pop3

首先澄清一下:我是Spring-integration的新手。

我想通过pop3频道接收邮件。我知道并且(这么认为)了解轮询机制。但我也希望通过客户端事件触发新邮件的问题。这可以通过网关或事件或特殊服务定位器来完成吗?

谢谢勇敢的助手!

1 个答案:

答案 0 :(得分:2)

不想找到我之前展示的类似解决方案,即使是在SO上也是如此。 但正如你所说你是新手,所以我只是为你提供解决方案。

好吧,现在你有这样的事情:

<int-mail:inbound-channel-adapter store-uri="pop3:foo"
                              channel="channel">
      <int:poller fixed-rate="60000"/>
</int-mail:inbound-channel-adapter>

在配置为Pop3MailReceiver提供bean的背景下。 要获得解决方案,您应该将<int-mail:inbound-channel-adapter/>更改为此配置:

<beans:bean id="pop3MailReceiver" class="org.springframework.integration.mail.Pop3MailReceiver"/>

<int:inbound-channel-adapter channel="getEmailsChannel" expression="''">
    <int:poller fixed-rate="60000"/>
</int:inbound-channel-adapter>

<int:service-activator input-channel="getEmailsChannel" output-channel="processEmailsChannel"
                               expression="@pop3MailReceiver.receive()"/>
  1. 当然,您应该为Pop3MailReceiver
  2. 提供适当的属性
  3. 通用<int:inbound-channel-adapter>会触发您的Pop3MailReceiver,因为您的案例已经在调用<int:service-activator>
  4. <int:service-activator>反过来只是来自POP3的民意调查邮件。
  5. 要注意的一点是,MailReceiver#receive()会返回一组邮件消息,因此可能需要在收到后将其拆分,以便与<int-mail:inbound-channel-adapter/>保持一致。