我的传入邮件适配器的配置如下。当应用程序在单个服务器上运行时,一切正常。但是,当我在负载平衡的服务器中部署应用程序并监听同一个邮箱时,则会在所有服务器中读取邮件。 如何处理这种情况?是否有任何特定的配置来处理这种情况。
<int-mail:imap-idle-channel-adapter
id="customAdapter"
store-uri="${mail.protocol}://${mail.username}:${mail.password}@${mail.host}:${mail.port}/${mail.folder}"
channel="recieveEmailChannel" auto-startup="true"
should-delete-messages="false"
should-mark-messages-as-read="true"
java-mail-properties="javaMailProperties"
mail-filter-expression="subject matches '(?i).*Email Notification.*'" />
<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">true</prop>
<prop key="mail.imap.starttls.enable">true</prop>
<prop key="mail.imaps.ssl.trust">${mail.ssl.trust}</prop>
<prop key="mail.imaps.usesocketchannels">true</prop>
</util:properties>
<int:service-activator input-channel="recieveEmailChannel" expression="@emailService.process(payload)" />
答案 0 :(得分:1)
其中一个Leader Election与role
相同<int-mail:imap-idle-channel-adapter>
。
另一个是Idempotent Receiver来跟踪共享MetadataStore
中的重复项。