,我在下面的教程:https://cloud.google.com/solutions/mobile/firebase-app-engine-android-studio如何保持應用程序引擎的Servlet聽火力
我所擁有的一切工作和電子郵件,每2分鐘,因爲它應該發送。但是,我現在希望將此擴展爲只觸發Firebase節點上的數據更改時發送電子郵件,而不是每2分鐘發送一條消息。
<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
<cron>
<url>/hello</url>
<description>Send me an email of outstanding items in the morning</description>
<schedule>every 2 minutes</schedule>
</cron>
</cronentries>
到:
爲了測試我從替換cron.xml
文件
<?xml version="1.0" encoding="UTF-8"?>
<cronentries/>
要清除的計劃任務。
但現在在做的火力地堡分貝的變化,郵件永遠不會發送....
如何將我的應用程序引擎服務器「監聽」保持到了火力點,隨後產生給動作onDataChanged
在實時?
MyServlet類:
public class MyServlet extends HttpServlet {
static Logger Log = Logger.getLogger("com.example.username.myapplication.backend.MyServlet");
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
Log.info("Got cron message, constructing email.");
//Create a new Firebase instance and subscribe on child events.
Firebase firebase = new Firebase("[firebase ref]");
firebase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Build the email message contents using every field from Firebase.
final StringBuilder newItemMessage = new StringBuilder();
newItemMessage.append("This should arrive very closely after changing the data");
//Now Send the email
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
try {
Message msg = new MimeMessage(session);
//Make sure you substitute your project-id in the email From field
msg.setFrom(new InternetAddress("[email protected][app-engine].appspotmail.com",
"Todo Nagger"));
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress("[email protected]", "Recipient"));
msg.setSubject("Feast Email Test");
msg.setText(newItemMessage.toString());
Transport.send(msg);
} catch (MessagingException | UnsupportedEncodingException e) {
Log.warning(e.getMessage());
}
}
public void onCancelled(FirebaseError firebaseError) {
}
});
}
}
或者我應該只使用node.js ...? – Sauron
您已經提到了教程,但是在啓用自動縮放時(在tut中涵蓋)幾乎總是會出現此錯誤。請參閱[此主題](https://groups.google.com/forum/#!searchin/firebase-talk/app$20engine/firebase-talk/CZYPteFV1Xw/BZ_DooKlDAAJ)。 – Kato
另外,您可能需要記錄onCancelled()處理程序以查看您的偵聽器是否被拒絕。 – Kato