2014-09-24 36 views
3

我正在使用MongoDB作为数据库的Web应用程序。数据通过Java应用程序插入到此数据库中,我想以某种方式监视/了解数据是从nodejs应用程序中插入的,以便我可以通过socket.io将一些信息推送到客户端。使用Nodejs MongoDB和JAVA作为后端的实时应用程序

我知道当我们从等式中移除Java部分并通过nodejs执行插入时,这很容易。但对我来说情况并非如此;所以我需要mongodb上的指针 - nodejs推一种东西..如果解决方案只保留在Java,Nodejs和mongodb中,这将是非常好的。但是如果必须包含其他第三方框架或技术(如mq),我很乐意听到这一点。

+0

观看Mongo数据变化有多种方式,比如mongo-watch。或者你可以简单地让MongoDB操作也可以ping Node应用程序,等等。 – 2014-09-24 19:15:10

+0

@DaveNewton所以有可能从nodejs应用程序中知道java何时将数据插入到mongodb中 – Ahmet 2014-09-24 19:19:55

+0

这是(a)Java应用程序告诉NodeJS,或者(b)你正在使用某种mongo监视器。 – 2014-09-24 19:24:56

回答

2

我建议让Java应用程序让你的前端(节点)应用知道它什么时候改变了什么。这留下了知道发生了什么变化的责任以及系统如何进行更改。观察数据库的变化听起来像是一个好主意,并且可能会起作用,但它更有可能导致您的问题。考虑:

  • 要观看哪些数据?
  • 你认为哪些改变值得采取行动?
  • 当您更改数据更新方式时会发生什么?
  • 你怎么知道什么时候变化是原子的?

所有这些问题至少可以缓解,前提是简单地告诉您的前端是什么发生了变化以及如何获取资源以及何时发生资源。

你如何告诉你的前端取决于你。从Java到前端的简单HTTP调用很简单,如果有点不可靠且不可预知(负载明智)。像Amazon SNS这样的队列/通知服务可能会更健壮一些。

+0

这是一个迟到的评论,但我最终将相关数据发布到Node.JS,然后插入MongoDB中的原子进程,由Java应用程序执行 – Ahmet 2018-01-05 14:21:40

3

我建议你应该寻找apache kafka连接,它提供了源连接器来保持你的mongo数据库。 Confluent 已经创建了提供上述功能的mongo连接器。你可以通过上面的链接进行进一步的研究。 Apache kafka是一个消息队列系统。

相关问题