【问题标题】:Creating Java jobs pool创建 Java 作业池
【发布时间】:2014-06-30 12:26:06
【问题描述】:

我的应用 JavaEE 应用是移动客户端的后端服务,所以客户端必须注册到后端服务,注册过程中有很多数据库进程和不同类型的作业,为了提高性能我计划创建作业池,例如,当客户端注册到后端服务时,他们的作业被推送到池中,直到池大小变满。如果pull size满了,jobs就会被处理……有没有合适的方法来实现这个想法?

谢谢,

【问题讨论】:

  • 为什么要等到池已满,我只是将作业推送到 JMS 中?
  • 我的主要目标是一次性收集作业和执行,
  • 看看你的应用服务器是否有类似激活规范的东西。
  • 另外,池化将如何提高性能,通过池化您将创建负载窥视的作业。

标签: java jakarta-ee concurrency connection-pooling


【解决方案1】:

什么是等到你积累一个大块而不是快速处理小块的原因?就性能而言,这几乎总是更好,甚至不谈交易等。此外,您的客户等待的时间比必要的要长。

如果您真的想这样做,我会将所有传入请求存储在列表、数据库或队列中,无论您喜欢什么,是否需要持久化,并定期检查新请求并在超过某个阈值时才需要处理它们。

【讨论】:

  • 其实我是想快速响应客户,我的目的是客户不需要等待所有的工作......
  • 那么您需要做的就是异步执行实际作业,例如使用AsynchrousEJB 或JMS 队列,然后立即返回给客户端。这是长时间运行请求的常用技术。如果您需要通知客户端作业成功,您可以从他们那里轮询(取决于可能会产生高负载的客户端数量)或使用 WebSockets 之类的东西(如果可能在您的架构中)。
猜你喜欢
  • 2014-04-05
  • 2021-08-29
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多