目标是制作pdf生成服务。该服务可通过简单的servlet实现。
假设是这样的,服务应该在多个负载平衡的服务器(例如Tomcat实例)上运行,每个服务器运行其手动创建的线程,生成PDF。每个请求都必须写入数据库,并且必须在整个过程中更新其pdf状态,例如:
另一个假设是获得请求的每个Tomcat实例负责生成文档。整个解决方案必须在重新启动时保持不变,因此每个服务器实例都需要以某种方式存储其任务队列(例如在文件中?)。
有人可能认为整个过程可能与数据库同步,但IMHO轮询数据库以获取新的PDF请求可能非常耗时。
任何想法,提示?
假设是灵活的,所以如果有人碰巧带有一些好的假设解决方案,请与他人分享他/她的想法。
答案 0 :(得分:1)
对于排队,使用像RabbitMQ或ActiveMQ这样的消息总线和持久队列。
如果侦听器在处理完消息之前死亡,则消息将被取消确认并可供其他侦听器处理。另一个听众会拿起它,再次将状态设置为IN PROGRESS,然后完成它。