2016-07-06 41 views
0

我已經配置了一個imap通道適配器以20000固定延遲接收郵件。 所以它按預期工作。但問題是,它持續運行。所以我有幾個問題:啓動和停止 - 主要參數中的春季imap入站通道適配器

  1. 如何使用main()啓動和停止此通道適配器?
  2. 當我們在批處理服務器(unix)中配置這項工作時,如何使用主程序本身來停止這項工作(這是通道適配器連續運行)。
  3. 我該如何返回一些主要的方法,這是啓動輪詢作爲'成功'或'失敗',以便我可以從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"/> 

回答

0
  1. 啓動和停止可以通過Control Bus部件來控制。

  2. 您甚至可以通過某種條件從下游流中停止該適配器,並向相同的控制總線通道發送消息。

  3. 如果你只需要運行一次,你可以考慮trigger選項,而不是fixed-delay和實現它想:通過簡單的CountDonwLatch和一些AtomicBoolean

    private final AtomicBoolean invoked = new AtomicBoolean(); 
    
    public Date nextExecutionTime(TriggerContext triggerContext) { 
        return this.invoked.getAndSet(true) ? null : new Date(); 
    } 
    
  4. 返回事主,你可以(或Reference)bean。

對不起,在一個主題中有太多問題......這不適合SO。

相關問題