【发布时间】:2014-03-03 03:46:20
【问题描述】:
我正在寻找一个在 Java 中实现 Web 服务(我们称之为 A),它接受作业请求,然后将这些请求发送到另一个 Web 服务(第三方服务,我们称之为 B)。这里没有什么复杂的。从 B 到 A 的响应是同步的(返回作业 ID),然后当作业完成时,B 向 A 发送一条异步消息,通知它作业已完成(到 B 的作业可能需要 X 时间)。 B 一次只能接受 20 个工作,但是 A 应该能够接受来自多个客户的尽可能多的工作。因此,A 需要一个排队系统来只向 B 发送不超过 20 个工作。当 B 完成一项工作并通知 A 时,A 可以向 B 发送另一个工作。
我可以将进入 A 的作业保存在状态为 NEW 的数据库中,然后每 5 分钟运行一个进程,收集新作业,如果 B 处理的作业
我可以使用 JMS 或像 Camel 这样的路由引擎来做到这一点,或者是否有人可以提供另一个框架来提供帮助。我找不到任何维护队列并且只发送最多 X 个作业的东西。 A 队列可能有数百个作业等待处理,但只有在 B 完成另一个作业时才会向 B 发送另一个作业。
【问题讨论】:
标签: queue jms apache-camel spring-integration