2013-10-05 33 views
0

不幸的是我剛開始擴展APNS提供者程序,對於網絡協議實現來說我真的很陌生。 供應商現在只能在一個線程上運行,它只處理少量的通知。現在我想增加比以前更多的發送能力。 我的問題是:從Java提供者實現到APNS的多重連接

  1. 根據蘋果的文檔,我可以保持對網關的多個連接。所以我的理解是我在提供程序中運行多線程,並在每個程序中保持單獨的連接。這是正確的嗎?

  2. 第一個是對我來說真正的困難來了:我的程序每5秒輪詢一次隊列數據庫來檢查要發送的新消息。我不認爲這是所有線程輪詢這個相同的數據庫的好主意,因爲應該有重複的消息給用戶。如何解決這個問題呢?

我已經看到連接池,但我並不真正瞭解那是什麼。那是我需要學習和使用的東西嗎?如果有人可以提供關於它是什麼以及如何使用它的簡要解釋?

謝謝你們!

+0

你是在談論實現服務器還是客戶端? – 2013-10-05 16:06:52

回答

0

你的第一個假設是合理的。每個線程都應該有自己的連接。

至於第二點,應該同步對包含新消息的數據庫的訪問。例如,您可以通過一種同步方法訪問該數據庫,該方法可提取尚未處理的消息或多個消息,並將其標記爲正在處理中。兩個線程不能同時訪問該方法,因此不會得到相同的消息。

另一種方法是將消息放入內存中,以便在發生崩潰時爲數據庫提供備份。線程可以從隊列中請求一個項目,這會阻止它們直到項目可用。