因此,让我首先明确要求
- 我正在创建一个Java Server端应用程序,它有几个REST API。现在我想收集统计信息并在通过HTTP
调用API时进行一些日志记录
- 现在,记录和收集/持久化统计信息会降低API调用的速度,因此我希望这种情况异步发生,因此可以继续执行API。
- 那么什么解决方案最适合这个?我想确保没有数据丢失,并且解决方案也可以随负载扩展。我想到了Akka框架,但不确定它是否符合我的要求。创建简单的线程来完成工作可能无法扩展。是否有任何标准的Java解决方案/模式?
醇>
1 个答案:
答案 0 :(得分:0)
- 实现具有固定线程数的线程池(无论什么是最佳的)
- 创建具有所需详细信息的自定义对象w。
- 有一个可以容纳这些自定义对象的队列
- 每当调用API时,创建这些对象并将它们放在队列
中
- 线程应该在队列上等待,如果为空,则将这些任务(自定义对象)出列,并异步执行日志记录。
- 工作完成后,不要杀死这些线程。在线程内部有一个while()循环,以便它可以在队列上再次等待以使另一个任务出列并执行它。