私はdockerで動作しているバックエンドJavaアプリケーション(Springを使用)で作業しています。このアプリケーションにはFirebase RealTime Listenerがあります。ローカルでは完璧に動作します!私はドッカーでそれを展開し、2つのインスタンス(コンテナ)を作成するときしかし、それは(それが一度だけ実行する必要があります)私はFirebase RTDBで変更を行う際に2回同じロジックを実行するために開始します。でもそれは、2インスタンスを持っている、Firebase Listenerを使用したバックエンドJavaアプリケーションの複数の問題の問題
FirebaseOptions options;
options = new FirebaseOptions.Builder()
.setServiceAccount(new FileInputStream(resourceDir + File.separator
+"test1.json"))
.setDatabaseUrl("https://test1.firebaseio.com/").build();
FirebaseApp.initializeApp(options);
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference listenerRef;
DatabaseReference commerceRef;
commerceRef.orderByChild("got").equalTo(0).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
LOGGER.info("data changed:" + dataSnapshot.getKey());
LOGGER.info("data ref:" + dataSnapshot.getRef());
......logic ....
} catch (Exception e) {
LOGGER.info("Error en recepcion de actualizaciones de firebase" + e.getMessage(), e);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
LOGGER.error("The read failed: " + databaseError.getCode());
}
@Override
public void onChildChanged(DataSnapshot arg0, String arg1) {
LOGGER.info("Uno de los hijos fue modificado");
}
@Override
public void onChildMoved(DataSnapshot arg0, String arg1) {
LOGGER.info("Uno de los hijos fue reubicado");
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
LOGGER.info("Uno de los hijos fue removido");
}
});
それが一度に動作させるためにどのような方法があります:これは私がリスナーを作成するために豆を持っているコードはありますか?そうでない場合、私は何をすべきですか? (一つだけのコンテナを使用すると、それが有効な解決策ではない - が高いavailityに)