在两个不同的java进程之间通信

在两个不同的java进程之间通信,java,sockets,process,Java,Sockets,Process,我有两个java进程,Process1负责将一些外部数据导入数据库,Process2使用相同的数据库运行应用程序的其余部分,即它承载web模块和其他所有内容。Process1通常每天导入一次数据 我需要的是,当Process1完成它的工作时,它应该通知Process2,以便它可以执行一些后续任务。就是说,这就是他们相互作用的限度。以后不必共享其他数据 不,我知道我可以通过以下方式之一实现: 让Process1在完成执行后在数据库中写入一个条目,并让demon线程在Process2中查找该条目。读

我有两个java进程,Process1负责将一些外部数据导入数据库,Process2使用相同的数据库运行应用程序的其余部分,即它承载web模块和其他所有内容。Process1通常每天导入一次数据

我需要的是,当Process1完成它的工作时,它应该通知Process2,以便它可以执行一些后续任务。就是说,这就是他们相互作用的限度。以后不必共享其他数据

不,我知道我可以通过以下方式之一实现:

  • 让Process1在完成执行后在数据库中写入一个条目,并让demon线程在Process2中查找该条目。读取此条目后,完成Process2中的任务。尽管这在现有的生态系统中可能是最容易实现的,但我认为仅仅为一个通知在数据库中进行线程循环看起来有点难看。但是,可以通过仅在导入作业启动时启动线程并在收到通知后终止线程来优化

  • 使用插座。我以前从未使用过套接字,因此这可能是一个有趣的学习曲线。但在我最初的阅读之后,我担心这可能是一种过度的杀伤力

  • 使用RMI

  • 我想听听研究过类似问题的人的意见,他们选择了什么方法,为什么选择,还想知道什么是解决我问题的合适方法

    编辑。
    我浏览了一遍,但发现对于进程间通信的初学者来说,它缺乏基本的示例。这就是我在这篇文章中看到的内容。

    我想说,看看

    它使用一个数组并保存堆外的数据(因此GC没有问题)。此外,还为场景提供TCP复制


    当有多台机器可用时,它可以很好地扩展并支持分布式处理。

    可能与“java进程间通信”重复,或者只是在谷歌上搜索一下。@antoh我做了这项研究,正如你在帖子中看到的那样。我想知道在我面临的情况下,什么更合适。我已经浏览了链接,我看不到什么研究证据。您没有提到信号、信号量或消息队列,它们是非常经典的IPC技术。更新数据库中的字段将是一个糟糕的想法,因为这几乎意味着一个进程不断地执行数据库请求,但结果很少,直到字段在某个未指定的时间被更改为止。最好的是,如果我们对这2个进程不了解环境,我们可以给予很少的真正帮助,IMO.,我读过它们,但出于理由,我没有认真考虑它们。现在看来,JMS可能是一个解决方案。谢谢