从Java提供程序实现到APNS的多个连接

时间:2013-10-05 15:29:50

标签: java iphone ios multithreading apple-push-notifications

刚开始扩展APNS提供程序,遗憾的是我对网络协议实现并不熟悉。 提供程序现在只在一个线程上运行,它只处理少量通知。现在我想提高它发送比以前更多的能力。 我的问题是:

  1. 根据Apple doc,我可以保持与网关的多个连接。所以我的理解是我在提供程序中运行多线程并在每个程序中维护一个单独的连接。这是对的吗?

  2. 第一个是正确的,对我来说真正的困难来了:我的程序每隔5秒轮询一个队列数据库,以检查要发送的新消息。我不认为所有线程轮询同一个数据库是个好主意,因为应该有相同的重复消息给用户。如何解决这个问题?

  3. 我已经看到了连接池,但我真的不明白它是什么。这是我需要学习和使用的东西吗?如果可以,有人可以提供关于它是什么以及如何使用它的简要说明吗?

    谢谢你们!

1 个答案:

答案 0 :(得分:0)

你的第一个假设是合理的。每个线程都应该有自己的连接。

至于第二点,应该同步对包含新消息的DB的访问。例如,您可以通过同步方法访问该数据库,该方法提取消息或尚未处理的多条消息,并将其标记为正在处理。两个线程无法同时访问该方法,因此不会收到相同的消息。

另一种选择是将消息放入内存中的阻塞状态(数据库仅在发生崩溃时用于备份)。线程可以从队列中请求一个项目,这将阻止它们直到项目可用。