【问题标题】:Start & Stop - Spring imap inbound-channel-adapter from main args启动和停止 - 来自主参数的 Spring imap inbound-channel-adapter
【发布时间】:2016-07-06 17:18:16
【问题描述】:

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

  1. 如何使用 main() 启动和停止此通道适配器?
  2. 当我们在批处理服务器 (unix) 中配置此作业时,如何使用主程序本身停止此作业(这是此通道适配器持续运行)。
  3. 如何将某些内容返回给 main 方法,该方法将轮询器启动为“成功”或“失败”,以便我可以从 main 返回 system.exit(0) 或 system.exit(1)。
  4. 如何通过运行通道适配器完全控制 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"/>

【问题讨论】:

    标签: java spring spring-integration jakarta-mail


    【解决方案1】:
    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 将某些内容返回给main。

    抱歉,一个主题有这么多问题……这不适合 SO。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多