春季集成:如何汇总所有新电子邮件并对其进行计数

时间:2019-01-09 11:15:09

标签: xml spring spring-integration

我正在开发一个应用程序,该应用程序每周从IMAP服务器接收电子邮件并生成有关该电子邮件的统计信息。其中之一就是主题相同的电子邮件数量。

我一直在考虑使用重新排序器来存储来自服务器的所有消息,并在接收到所有新消息时生成统计信息,并最终分别发送消息。

但是我错过了sequence_numbercorrelation_id,当服务器上的消息结束时,我找不到正确的释放组的方法。

这是我的integration-context.xml

<int:channel id="startMailSync"/>
<int:control-bus id="start" input-channel="startMailSync"/>

<int:channel id="receiveChannel" datatype="javax.mail.internet.MimeMessage" />
<int-mail:inbound-channel-adapter 
    id="mailClient"
    channel="receiveChannel" 
    java-mail-properties="javaMailProperties"
    store-uri="imaps://[user]:[password]@mail.it/INBOX"
    should-mark-messages-as-read="true"
    should-delete-messages="false"
    mail-filter-expression="from[0].address matches 'sender@sender.it'"
    auto-startup="false">

    <int:poller trigger="runOnceTrigger" max-messages-per-poll="100"/>
</int-mail:inbound-channel-adapter>

<util:properties id="javaMailProperties">
    <prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
    <prop key="mail.imap.socketFactory.fallback">false</prop>
    <prop key="mail.store.protocol">imaps</prop>
    <prop key="mail.debug">false</prop>
</util:properties>

<int:resequencer 
    input-channel="receiveChannel" 
    output-channel="a"
 >

1 个答案:

答案 0 :(得分:0)

您应该使用聚合器而不是重新排序器;您可以使用自定义关联策略/表达(例如与主题相关)和自定义发布策略/表达。