在Spring初始化期间处理RabbitMQ消息

时间:2016-08-12 11:16:15

标签: java spring amqp

我的应用程序有几个部分,其中一个部分负责处理高速率的输入事件和请求,另一个部分负责将信息存储到DB。由于使用DB需要很长时间,因此第二部分在单独的线程中工作,并使用第一部分写入的RabbitMQ中的队列消息。第一部分还有一个存储在DB中的所有数据的缓存,并在启动时恢复。

但是这里有一个问题:如果你杀死一个应用程序,当第二部分的队列不为空并重新启动时,你将无法获得之前的缓存,而是一个没有处理新事件的版本。因此,显而易见的解决方案是在恢复缓存之前等待队列耗尽,但我没有设法做到这一点。此外,缓存在另一个模块的初始化期间使用,因此我希望在启动时处理所有消息。

那么,有没有办法完全初始化一个模块并启动它的工作并继续在某些特殊信号上初始化其他模块?如果可能的话,我会等待所有事件被处理并存储到数据库中,然后可以完全恢复该缓存。

0 个答案:

没有答案