Multithreading Firebase是否使用App Engine在Java Server SDK上处理线程?
我有这样的设置: 客户端实时数据库AppEngine服务器 AppEngine服务器在servlet init()方法中有一些代码 每当客户端更新firebase中的某个节点时,AppEngine都将侦听此更改,并执行一些处理和更新其他一些节点 此设置用于测试,因为我是单用户。但是如果有100人在使用这个应用呢?我是否保证这个childEventListener将为每个用户运行代码?这些嵌套的SingleValueEventListener也会触发吗 或者我必须在每个不同的firebase请求上创建线程?或者这一切都由Firebase Java Server SDK负责Multithreading Firebase是否使用App Engine在Java Server SDK上处理线程?,multithreading,google-app-engine,servlets,firebase,firebase-realtime-database,Multithreading,Google App Engine,Servlets,Firebase,Firebase Realtime Database,我有这样的设置: 客户端实时数据库AppEngine服务器 AppEngine服务器在servlet init()方法中有一些代码 每当客户端更新firebase中的某个节点时,AppEngine都将侦听此更改,并执行一些处理和更新其他一些节点 此设置用于测试,因为我是单用户。但是如果有100人在使用这个应用呢?我是否保证这个childEventListener将为每个用户运行代码?这些嵌套的SingleValueEventListener也会触发吗 或者我必须在每个不同的firebase请求上
另外,init()方法是放置ChildEventListeners的正确位置吗?我可以添加类似于。。。应用程序引擎firebase上有10个侦听器?使用后台线程侦听firebase上的更改。通过添加ChildEventListener,您可以在后台创建一个新的长寿线程,该线程将为您处理所有事情,无需担心,也可以创建一个新线程等。无论是谁做了这些更改,firebase中的更改都会触发该线程(您的任何用户都可以这样做)。但要在应用程序引擎上使用长寿命后台线程,需要启用手动缩放,这意味着只有一个后端实例将运行。它将处理尽可能多的请求,因此您的后端可以处理每秒的固定更改限制。在应用程序引擎firebase上,firebase使用后台线程侦听firebase上的更改。通过添加ChildEventListener,您可以在后台创建一个新的长寿线程,该线程将为您处理所有事情,无需担心,也可以创建一个新线程等。无论是谁做了这些更改,firebase中的更改都会触发该线程(您的任何用户都可以这样做)。但要在应用程序引擎上使用长寿命后台线程,需要启用手动缩放,这意味着只有一个后端实例将运行。它将处理尽可能多的请求,因此后端可以处理每秒的固定更改限制。我有一个类似的应用程序正在运行,我们已经使用它好几个月了。我不建议您为此使用appEngine标准环境,因为它不准备保持持久连接(我们是这样开始的) 因此,有时我们会与firebase失去联系,在进行一些研究后,我们发现这是一个常见的问题。解决此问题的唯一方法是将服务器迁移到灵活的环境中 这是一个beta版本,我不确定未来的定价,但只要它能与我们的应用程序配合使用就行了
希望这对你有帮助 我有一个类似的应用程序,我们已经使用了几个月了。我不建议您为此使用appEngine标准环境,因为它不准备保持持久连接(我们是这样开始的) 因此,有时我们会与firebase失去联系,在进行一些研究后,我们发现这是一个常见的问题。解决此问题的唯一方法是将服务器迁移到灵活的环境中 这是一个beta版本,我不确定未来的定价,但只要它能与我们的应用程序配合使用就行了 希望这对你有帮助
@Override
public void init(ServletConfig sc) throws ServletException {
// Setup Firebase....
firebase.addChildEventListener(..nested SingleValueEventListener..);
}