【发布时间】:2017-06-27 09:56:54
【问题描述】:
上下文:
1) 我们有一个调度程序,它通过以阻塞方式调用另一个 rest-call 来获取作业并处理它们。
2) 调度程序线程需要等待休息调用完成,然后根据结果执行一些其他任务。
3) 对于实时性没有任何限制。
问题陈述:
1) 我们想要的是在进行外部调用后立即释放调度程序线程,因为外部调用需要大量时间才能完成。
2) 我们应该被告知从外部调用收到的结果,因为我们需要根据结果进行一些处理。
我的想法:
1) 我们不是使用同步 Http 调用来调用外部系统,而是 可以将事件推送到队列中。
2) 另一个系统的 API 消费者将从队列中读取事件并执行长时间运行的任务。并且后期处理将结果推送回不同主题的队列。
3) 我们的系统现在可以从队列(第二个主题)中读取响应并执行必要的操作。
这是我的设计方法之一
我需要关于我们是否可以以某种方式改进设计的建议。
1) 在不引入队列的情况下可以做到这一点吗?
2) 有没有更好的方法来实现异步处理?
【问题讨论】:
-
我不明白“我们想要的是在进行外部调用时释放调度程序线程”。这是您将分配一个线程而不是释放它的点。
-
我们有一个调度程序,它通过以阻塞方式调用另一个 rest-call 来获取作业并处理它们。由于调用时间太长,我们需要让它成为非阻塞的,但是我们必须根据调用的结果做一些处理。我们可以在非实时基础上做到这一点
-
这并不能以任何方式回答我的问题。
-
我编辑了这个问题。现在还好吗?
标签: java multithreading asynchronous architecture system-design