【发布时间】:2015-02-09 15:18:39
【问题描述】:
我需要帮助来找出以下设计问题的最佳解决方案。
我有一个供我们的用户使用的前端服务器。他们提交应该异步运行的任务,并在完成时发送电子邮件。该任务执行调用外部 API 并在那里更新某些内容。有与 API 关联的帐户(不要被用户帐户混淆)。用户将为特定帐户运行任务,一旦该帐户在进行 api 更新时被占用,其他想要使用相同帐户更新 API 的任务必须等待。请注意,用户不必等待,他们可能会为同一个 (api) 帐户提交许多任务。系统将负责将任务放入队列中。 队列将被一堆服务器监听,一旦帐户被释放,下一个任务将被其他服务器接收。因此,我们提交了多个任务,更新了多个帐户的 api。 我正在将 Apache Camel 作为我的解决方案,前端将在总线上提交任务,其中一台服务器将接收它。但是,如果同一帐户有多个任务,则只能执行一个,如上所述,我想将同一帐户的其他任务保留在队列中的某个位置(我不知道该怎么做)和一旦帐户被释放,下一条消息应该由集群中的一个服务器选择。 任何关于更好解决方案的建议,甚至不确定 Camel 是否是此类问题的最佳解决方案。我是这种异步设计问题的新手。
【问题讨论】:
标签: java design-patterns apache-camel esb mq