使用Firebase侦听器的后端Java应用程序的多个实例出现问题

时间:2017-05-02 03:36:03

标签: java spring firebase docker firebase-realtime-database

我在使用docker运行的后端java应用程序(使用Spring)中工作。此应用程序具有Firebase实时侦听器。在当地它的工作完美!但是当我在Docker中部署并创建2个实例(容器)时,当我在Firebase RTDB中进行更改时,它开始运行2次相同的逻辑(它应该只执行一次)。这是我在Bean中创建监听器的代码:

f(p)=0

有没有办法使它工作一次,即使它有2个实例?如果没有,我该怎么办? (仅使用一个容器,由于高效率,它不是有效的解决方案)

1 个答案:

答案 0 :(得分:0)

Firebase SDK无法知道自身是否有多个实例正在运行并在它们之间进行协调。你所看到的是预期的行为。如果只想要一个东西来监听数据库中的某个位置,则只需要一个实例,或者需要使用事务以复杂的方式自己进行协调。如果您想复制其逻辑,有一个名为firebase-queue的节点项目可以有效地执行此协调。

但是如果你的后端逻辑需要在数据库中每次更改运行一次,那么使用Cloud Functions for Firebase来管理它可能要好得多。