我已经配置了一个imap频道适配器来接收20000固定延迟的邮件。 所以它按预期工作。但问题是,它不断运行。所以我有几个问题:
提前感谢您的帮助。
<int-mail:imap-idle-channel-adapter id="customAdapter"
store-uri="imaps://[userid]:[pasword]@imap.gmail.com:993/inbox"
channel="receiveChannel"
auto-startup="true"
should-delete-messages="false"
should-mark-messages-as-read="false"
java-mail-properties="javaMailProperties"auto-startup="false">
<int:poller max-messages-per-poll="10" fixed-delay="20000"/>
答案 0 :(得分:0)
可以通过Control Bus组件控制启动和停止。
您甚至可以通过某些条件从下游流程停止该适配器并将消息发送到同一控制总线通道。
如果您只需要运行一次,则可以考虑使用trigger
选项而不是fixed-delay
,并将其实现为:
private final AtomicBoolean invoked = new AtomicBoolean();
public Date nextExecutionTime(TriggerContext triggerContext) {
return this.invoked.getAndSet(true) ? null : new Date();
}
您可以通过简单的CountDonwLatch
和一些AtomicBoolean
(或Reference
)bean返回主要内容。
很抱歉,在一个主题中有这么多问题......这不适合SO。