2014-03-14 45 views
0

我應該在時間關鍵的應用程序中發送即時電子郵件給一組 聯繫人。即時消息傳遞 - Java上的單連接或多線程

說,我有n個聯繫人在列表中。因此,我可以執行以下任一操作:

i)向多個接收者發送一封電子郵件給所有這n個聯繫人。

ii)以n個線程爲每個接收者分別發送n封電子郵件。

在第一種情況下,我在我的末端設置了一個連接,然後發送出去。

第二,連接到我的smtp服務器。但是,它是併發的。

哪一個更快?

+0

我想第一個會更快..但沒有一些基準數據很難說..順便說一下,您的時間關鍵應用程序將使用何種語言? – sakura

+0

Java。 thx提醒。 – Roam

+0

電子郵件並非旨在成爲即時消息。 如果你想要即時消息,你需要p2p類型的連接。 如果您打算使用電子郵件,而不是您將如何發送電子郵件,那麼太多其他因素將會受到干擾。 通常第一種方法將會(稍微)更快,因爲它將允許郵件服務器優化郵件發送的方式。 –

回答

0

電子郵件並非旨在成爲即時消息。
如果你想要即時消息,你需要p2p類型的連接。如果你打算使用電子郵件而不是你將如何發送它們,那麼太多的其他因素都會受到干擾。通常第一種方法將(稍微)更快,因爲它將允許郵件服務器優化郵件的發送方式。

ServerSocket()http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html和Socket()docs.oracle.com/javase/7/docs/api/java/net/Socket.html

同樣,你將需要P2P,如果你需要保證的傳遞上面,如果速度更重要,服務器/客戶端在同一網絡上,你可能想看MulticastSockethttp://download.java.net/jdk7/archive/b123/docs/api/java/net/ ...

0

第一種情況是因爲它只向服務器發送大約只有x個字節(消息的大小),而第二種情況向服務器發送了大約x * n個字節(我假設)交錯與否。

0

隨着您的第一個選項,只有一個副本將發送給每個收件人,它應該相對更快。但取決於收件人和服務器的容量。 通過第二個選項,儘管它的併發'n'連接已經完成,並且每個線程都會發送相同的副本。比率::線程運行=發送給個人收件人的郵件。

是的,第二種選擇會更好,如果你必須安排任務發送郵件到更大的羣衆。例如:在這種情況下,MNC向其80000名員工發送郵件時,收件人限制可能會派上用場,並且郵件將以X'收件人的大塊(即5000名員工)的身份發送。而在這種情況下,由於服務器故障,第一個選項可能會失敗。

實際例子:我在Infotech工作,這裏的一組郵件收件人是根據部門進行維護的,但是有一個通用組,其中存儲了所有收件人的郵件ID。錯誤的用戶之一觸發郵件到該通用組,並在該郵件會議後開始導致完整的服務器故障。

在這種情況下,服務器容量等因素影響較大。