开始&停止 - 来自主args的Spring imap入站通道适配器

时间:2016-07-06 17:18:16

标签: java spring spring-integration javamail

我已经配置了一个imap频道适配器来接收20000固定延迟的邮件。 所以它按预期工作。但问题是,它不断运行。所以我有几个问题:

  1. 如何使用main()?
  2. 启动和停止此通道适配器
  3. 当我们在批处理服务器(unix)中配置此作业时,如何使用主程序本身停止此作业(此通道适配器连续运行)。
  4. 如何向main方法返回一些内容,即启动轮询器成功'成功'或者'失败'这样我就可以从main返回system.exit(0)或system.exit(1)。
  5. 如何通过运行通道适配器完全控制main()?
  6. 提前感谢您的帮助。

    <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"/>
    

1 个答案:

答案 0 :(得分:0)

  1. 可以通过Control Bus组件控制启动和停止。

  2. 您甚至可以通过某些条件从下游流程停止该适配器并将消息发送到同一控制总线通道。

  3. 如果您只需要运行一次,则可以考虑使用trigger选项而不是fixed-delay,并将其实现为:

    private final AtomicBoolean invoked = new AtomicBoolean();
    
    public Date nextExecutionTime(TriggerContext triggerContext) {
        return this.invoked.getAndSet(true) ? null : new Date();
    }
    
  4. 您可以通过简单的CountDonwLatch和一些AtomicBoolean(或Reference)bean返回主要内容。

  5. 很抱歉,在一个主题中有这么多问题......这不适合SO。