デイブTaubler:
私はFirebaseデータベースにクラウドを実行して、実行中のJavaアプリケーションから接続しようとしてきました。実行する(そしてその後も、私は望ましい結果を得ることはありません)私のアプリのFirebase取引のための多くの分の遅れがあるようです。
私のアプリが起動されると、次のメソッドが呼び出されます:
public void init() throws Exception {
LOGGER.info("FirebaseRepo-init starting...");
FileInputStream serviceAccount =
new FileInputStream("/MyDatabase.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://mydatabase-222123.firebaseio.com")
.build();
LOGGER.info("FirebaseRepo-init 1");
fbApp = FirebaseApp.initializeApp(options);
LOGGER.info("FirebaseRepo-init 2");
dbRef = FirebaseDatabase.getInstance().getReference();
LOGGER.info("FirebaseRepo-init 3");
final DatabaseReference entityRef = dbRef.child("entities");
LOGGER.info("FirebaseRepo-init 4");
Entity e = testEntity();
entityRef.runTransaction(new Transaction.Handler() {
@Override
public void onComplete(DatabaseError error, boolean committed, DataSnapshot currentData) {
LOGGER.info("FirebaseRepo-init tx onComplete; com=" + committed + "; err=" + error);
}
@Override
public Result doTransaction(MutableData data) {
LOGGER.info("FirebaseRepo-init tx start");
MutableData childData = data.child(e.getGuid().toString());
if (childData != null) {
LOGGER.info("FirebaseRepo-init tx progress");
childData.setValue(e);
} else {
LOGGER.info("FirebaseRepo-init tx null child");
}
LOGGER.info("FirebaseRepo-init tx will return");
return Transaction.success(data);
}
});
LOGGER.info("...FirebaseRepo-init ending");
}
アプリを展開した後、ログを確認し、我々は、次を参照してください。
2020-03-30T01:51:40.318532ZINFO: FirebaseRepo-init starting...
2020-03-30T01:51:40.749160ZINFO: FirebaseRepo-init 1
2020-03-30T01:51:40.781135ZINFO: FirebaseRepo-init 2
2020-03-30T01:51:40.947959ZINFO: FirebaseRepo-init 3
2020-03-30T01:51:40.949045ZINFO: FirebaseRepo-init 4
2020-03-30T01:51:40.952295ZINFO: ...FirebaseRepo-init ending
2020-03-30T01:54:10.647748ZINFO: FirebaseRepo-init tx start
2020-03-30T01:54:10.945862ZINFO: FirebaseRepo-init tx progress
2020-03-30T01:54:12.546400ZINFO: FirebaseRepo-init tx will return
2020-03-30T01:56:03.046096ZINFO: FirebaseRepo-init tx start
2020-03-30T01:56:03.245789ZINFO: FirebaseRepo-init tx progress
2020-03-30T01:56:03.547215ZINFO: FirebaseRepo-init tx will return
2020-03-30T01:56:10.446070ZINFO: FirebaseRepo-init tx onComplete; com=true; err=null
トランザクションは、アプリのINIT後2分半程度呼び出され...そして再び約5分後に、そして最終的に完了しています。私は私のFirebaseダッシュボードに行くときまた、私は私のデータベースに何も表示されません。何も、私はエラーが報告されていない見ていても、追加されていません。
私が作ってるんだN00B間違い上の任意の考え?
gso_gabriel:
問題のコメントを考えると、それは予想通り、クラウドの実行が実際に働いているようだ、しかし、それはクラウドの実行は、それがこの特定のユースケースのための推奨製品ではないということ場合があります。ダグの答えあたりとしてCloud Run isn't meant to run arbitrary code on deployment. It's meant to run code in response to incoming HTTP requests as your run a web server on port 8080.
直面している遅延のために理にかなっています、。それは他の製品をチェックする価値があるかもしれません。