如何在cron作业触发时登录firebase回调



我有一个web应用程序,在应用程序引擎上有一个servlet

以及调用servlet 的cron作业

我怎样才能看到燃烧基地内的日志回电?"onDataChange"

我只看到来自"doPost()" 的日志

private static final Logger logger = Logger.getLogger(MatchingServlet.class.getName());
    @Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    logger.info("in matching-servlet doPost");
    readFromDb();
}
private void readFromDb() {
    firebase.child("users").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            StringBuilder sb = new StringBuilder();
            sb.append("elad inside onDataChange. time: "+ System.currentTimeMillis());
            firebase.child("logs").setValue(sb.toString());
            List<User> users = new ArrayList<User>();
            Iterable<DataSnapshot> children = dataSnapshot.getChildren();
            System.out.println("children = " + children);
            logger.info("children = " + children);
            for (DataSnapshot ds : children) {

Firebase回调是异步的,因此您的readFromDB应该注册一个侦听器,并一直等待Firebase发送更新,不幸的是,任务一结束,您的线程就被终止了。这对GAE来说是一个大问题,因为实例到处都在创建和销毁,所以获得与Firebase服务器的持续连接并非易事。

为了使用Firebase回调,您必须使用服务(以前称为模块)设置一个常驻实例

最新更新