启动和停止 - Spring imap inbound-channel-adapter from main args
Start & Stop - Spring imap inbound-channel-adapter from main args
我已经配置了一个 imap 通道适配器来接收具有 20000 固定延迟的邮件。
所以它按预期工作。但问题是,它一直 运行。所以我有几个问题:
- 如何使用 main() 启动和停止此通道适配器?
- 当我们在批处理服务器 (unix) 中配置这个作业时,我如何使用主程序本身停止这个作业(这是这个通道适配器 运行 连续)。
- 我如何 return 将轮询器作为 'success' 或 'failure' 启动的主要方法,以便我可以 return system.exit (0) 或 system.exit(1) 来自 main.
- 如何通过 运行 通道适配器完全控制 main()?
在此先感谢您的帮助。
<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"/>
可以通过Control Bus组件控制启动和停止。
您甚至可以通过某些条件停止该适配器的下游流,并将消息发送到同一控制总线通道。
如果你只需要 运行 一次,你可以考虑 trigger
选项而不是 fixed-delay
并像这样实现它:
private final AtomicBoolean invoked = new AtomicBoolean();
public Date nextExecutionTime(TriggerContext triggerContext) {
return this.invoked.getAndSet(true) ? null : new Date();
}
Return 你可以通过简单的 CountDonwLatch
和一些 AtomicBoolean
(或 Reference
)bean 来做一些主要的事情。
抱歉,一个主题有这么多问题...这不适合 SO。
我已经配置了一个 imap 通道适配器来接收具有 20000 固定延迟的邮件。 所以它按预期工作。但问题是,它一直 运行。所以我有几个问题:
- 如何使用 main() 启动和停止此通道适配器?
- 当我们在批处理服务器 (unix) 中配置这个作业时,我如何使用主程序本身停止这个作业(这是这个通道适配器 运行 连续)。
- 我如何 return 将轮询器作为 'success' 或 'failure' 启动的主要方法,以便我可以 return system.exit (0) 或 system.exit(1) 来自 main.
- 如何通过 运行 通道适配器完全控制 main()?
在此先感谢您的帮助。
<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"/>
可以通过Control Bus组件控制启动和停止。
您甚至可以通过某些条件停止该适配器的下游流,并将消息发送到同一控制总线通道。
如果你只需要 运行 一次,你可以考虑
trigger
选项而不是fixed-delay
并像这样实现它:private final AtomicBoolean invoked = new AtomicBoolean(); public Date nextExecutionTime(TriggerContext triggerContext) { return this.invoked.getAndSet(true) ? null : new Date(); }
Return 你可以通过简单的
CountDonwLatch
和一些AtomicBoolean
(或Reference
)bean 来做一些主要的事情。
抱歉,一个主题有这么多问题...这不适合 SO。