2017-08-25 33 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); 
}