从FCM | Java接收未注册Android设备的多个nack通知

从FCM | Java接收未注册Android设备的多个nack通知,java,android,spring-boot,push-notification,firebase-cloud-messaging,Java,Android,Spring Boot,Push Notification,Firebase Cloud Messaging,我们在MySQL中维护一个包含所有GCMID的表,我们将通知推送到该表。随着时间的推移,一些可能会过期,因为用户可能会卸载应用程序或使用其他版本使其过载。然而,它可能已经过期,当我们尝试向这些设备发送推送通知时,FCM会发出带有未注册设备的消息或类似的错误代码。使用此信息,我将从数据库中删除此gcmid 但问题是,我收到的每个消息id的通知要多得多。我在XMPP连接中添加了一个SyncStanzaListener,如果是nack消息,它将侦听并传递到我的服务。因此,CPU会出现峰值,因为有大量的

我们在MySQL中维护一个包含所有GCMID的表,我们将通知推送到该表。随着时间的推移,一些可能会过期,因为用户可能会卸载应用程序或使用其他版本使其过载。然而,它可能已经过期,当我们尝试向这些设备发送推送通知时,FCM会发出带有未注册设备的消息或类似的错误代码。使用此信息,我将从数据库中删除此gcmid

但问题是,我收到的每个消息id的通知要多得多。我在XMPP连接中添加了一个SyncStanzaListener,如果是nack消息,它将侦听并传递到我的服务。因此,CPU会出现峰值,因为有大量的消息要处理。一台机器因此在生产过程中死亡

我还尝试向这个特定的gcmid发送“确认”消息,消息id确认我已收到该消息。我仍然在不断地收到同样的信息

有什么想法吗

我尝试用ttl将所有消息ID存储在redis中。但问题是,我不应该为一个过期的gcmid收到这么多的ACK,而它也有相同的消息id?!我有时会收到多达30个具有相同消息id的确认