2017-08-25 32 views
0

我的要求是一個接一個地以串行方式處理(調用Webservice)消息列表。如果第一條消息成功,那麼只處理第二條消息等。延時器連同Splitter,不連續處理的消息

我在這裏使用Splitter拆分消息。 Splitter內部我使用了Delayer(不是持久化)。

問題是隻要第一條消息進入延遲,列表中的第二條消息開始處理,而不等待第一條消息完成。

我相信這是發生的,因爲延時器不會阻塞線程。

有沒有辦法通過使用Splitter和延遲器來實現這個功能?

+0

你應該解釋一下爲什麼你在所有 –

+0

我不得不等待一些事件完成使用延時那裏,然後只調用Web服務。我正在使用延遲器,以便可以檢查數據庫是否完成事件。一旦事件完成,我打電話給webservice。 –

回答

1

延時器是按照這種方式設計的;它會安排消息在將來的某個時間處理。如果你只是想放慢處理分割的速度,只需添加一個具有Thread.sleep(...)的POJO服務(由服務激活器調用)並返回輸入消息。

public Message<?> sleeper(Message<?>) throws InterruptedException { 
    Thread.sleep(1000); 
}