【问题标题】:Running Threads In a Java EE Application [closed]在 Java EE 应用程序中运行线程 [关闭]
【发布时间】:2016-03-31 01:05:11
【问题描述】:

我正在构建一个 Java EE 应用程序,该应用程序会创建大量用于处理数据的线程。有没有一种方法可以在单独的服务器上创建这些线程而不是我的应用程序托管的服务器?然后让我的应用程序服务器设置为简单地访问这个其他(线程)服务器,以便在用户指定的时间从线程获取数据。我非常关心我的 Web 应用程序的可扩展性。

【问题讨论】:

  • 为什么不创建一个运行自己的 JVM(使用自己的线程)的服务服务器,然后您可以通过无数种方式在应用程序和服务服务器之间进行通信。
  • 线程存在于它们的父进程中
  • @Kon 这听起来像是一个精确的解决方案!你能给我发一个关于这个主题的文档的链接吗
  • @J.Dutch 我建议首先阅读 Java RMI,这是 JVM 与另一个 JVM 通信(调用方法)的常用方式。我没有什么特别的文章可以推荐,因为我在工作中学到了这些东西,但我相信那里有很多很好的资源。
  • @Kon 谢谢。我相信这正是我正在寻找的

标签: java multithreading jakarta-ee server


【解决方案1】:

在 Java-EE 应用程序中,您不应该自己创建/运行线程。那是应用服务器的职责。 除此之外,同时启动无限数量的线程是个坏主意。这很容易让你的服务器瘫痪。

您应该考虑使用消息队列。由于符合 java-ee 的应用程序服务器确实实现了 JMS - 它们已经内置了消息队列实现。例如如果您使用的是 JBoss - JMS-Implementation 是 HornetQ,我相信自从 wildfly 之后他们已经移至 ActiveMQ

这也将解决您的第二个问题:运行您的线程 - 或者在此停止您的消息队列 - 在单独的服务器甚至服务器集群中 - 因为您可以使用 JMS 或将消息发布到远程消息队列AMQP 协议。 如果您在单独的服务器上运行消息队列,您甚至不需要队列的应用程序服务器。您可以运行独立队列。在这种情况下,我会推荐RabbitMQ

【讨论】:

    猜你喜欢
    • 2013-01-02
    • 2011-01-06
    • 2012-06-23
    • 1970-01-01
    • 2013-06-09
    • 2014-08-16
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多