簡體   English   中英

通過JAVA中不可靠的網絡發送消息

[英]Sending messages over an unreliable network in JAVA

我需要從移動的計算機通過無線網絡發送連續的消息流(帶有時間戳和x / y坐標的簡單TextMessages)。 這些短消息將會很多(例如每秒200條),不幸的是,由於發送設備會不時離開WLAN區域,因此網絡連接很可能不可靠...當連接不可用時,所有即將出現的消息應該緩沖直到再次恢復連接。 傳輸消息的順序無關緊要,因為它們包含時間戳,但是必須傳輸所有消息。

發送這些電報的簡單但可靠的方法是什么? 是否可以僅使用“普通” TCP或UDP套接字連接? 連接暫時斷開后,消息是否會被緩沖並隨后自動發送? 還是直接檢測到並報告了連接丟失的情況,這樣我就可以緩沖消息並嘗試自行進行定期重新連接? Netty之類的圖書館在這里有幫助嗎?

我還考慮過使用代理來代理通信(例如,代理的ActiveMQ網絡)。 這里的開銷會太大嗎? 在這種情況下,您是否建議其他消息傳遞中間件?

TCP是保證傳遞的(即在連接時)-您應檢查連接是否斷開,並在重試連接時將消息放入隊列中。 一旦看到連接已備份,則將隊列轉儲到TCP套接字中。

另外,請查看TCP Keepalive以識別斷開的連接: http : //tldp.org/HOWTO/TCP-Keepalive-HOWTO/overview.html

似乎您可以使用“保證持久”可靠性模式使用Java JMS之類的消息包裝器。 在文本消息的上下文中,我自己還沒有這樣做,但是這種想法可能會引導您找到正確的答案。 另外,可能已經編寫了一個Apache庫來處理您的需求,例如Qpid

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM