如何在 Java 中实现异步应用程序
How to implement Asynchronous application in Java
所以让我先把要求说清楚
- 我正在创建一个 Java 服务器端应用程序,它有几个 REST API。现在我想在通过 HTTP
调用 API 时收集统计信息并进行一些日志记录
- 现在日志记录和 collecting/persisting 统计数据会减慢 API 调用的速度,所以我希望它异步发生,以便 API 执行可以继续。
- 那么什么解决方案最适合这个问题?我想确保没有数据丢失,而且解决方案可以随负载扩展。我想到了 Akka 框架,但不确定它是否能满足我的要求。创建简单的线程来完成这项工作可能无法扩展。有什么标准吗Javasolution/pattern?
- 使用固定数量的线程(最佳)实施线程池
- 创建具有所有所需详细信息的自定义对象。
- 有一个可以容纳这些自定义对象的队列
- 每当调用 API 时,创建这些对象并将它们放入 Queue
- 线程应在队列中等待,如果为空,则将这些任务(自定义对象)从队列中取出,异步进行日志记录。
- 作业完成后,不要杀死这些线程。在线程内有一个 while() 循环,以便它可以在队列中再次等待以出列另一个任务并执行它。
所以让我先把要求说清楚
- 我正在创建一个 Java 服务器端应用程序,它有几个 REST API。现在我想在通过 HTTP 调用 API 时收集统计信息并进行一些日志记录
- 现在日志记录和 collecting/persisting 统计数据会减慢 API 调用的速度,所以我希望它异步发生,以便 API 执行可以继续。
- 那么什么解决方案最适合这个问题?我想确保没有数据丢失,而且解决方案可以随负载扩展。我想到了 Akka 框架,但不确定它是否能满足我的要求。创建简单的线程来完成这项工作可能无法扩展。有什么标准吗Javasolution/pattern?
- 使用固定数量的线程(最佳)实施线程池
- 创建具有所有所需详细信息的自定义对象。
- 有一个可以容纳这些自定义对象的队列
- 每当调用 API 时,创建这些对象并将它们放入 Queue
- 线程应在队列中等待,如果为空,则将这些任务(自定义对象)从队列中取出,异步进行日志记录。
- 作业完成后,不要杀死这些线程。在线程内有一个 while() 循环,以便它可以在队列中再次等待以出列另一个任务并执行它。