目前,我的团队正处于针对APNS和GCM的推送通知应用程序的设计阶段,该应用程序将使用PushSharp(v 2.2.1)作为处理通知发送的核心组件。
我们预计会有大约200,000名订阅者(设备令牌)。应用程序需要发送两种类型的消息;一个将发送给所有订户,另一个将发送给少量5K到15K的订户。可以安排多种类型的消息同时发送。
我们正在考虑使用多个线程或任务来发送每条消息。我们倾向于将固定数量的任务专用于每种类型的消息,例如,第一种类型的两个任务和第二种类型的四个任务。每个任务都将负责发送消息的整个过程,因此每个任务都有一个单独的(私有)PushSharp.PushBroker类实例来处理作业。作业完成后,如果有计划发送的支持类型的新消息,则任务将处理它,否则将处理该任务。另一方面,如果将安排一条消息发送并且所有任务都忙,则必须等到相应类型的第一个任务可用。总之,PushSharp.PushBroker的多个实例将在同一应用程序中的不同任务/线程中运行(例如,Windows服务)。
在性能,所需资源或带宽方面,这是一种安全的方法吗?
关于线程安全并考虑到PushSharp内部使用多线程是否存在我们需要注意的同步问题?
最后,如果Pushsharp.PushBroker类的多个实例同时打开并使用与APNS或GCM的连接,是否会出现任何问题? (每个实例都将管理自己的连接。)
非常感谢任何想法或建议。
提前致谢,
乔治