[英]Using Java's ByteBuffer to read millions of messages
這是我的問題:一個大的gzip文件; 數百萬條消息。
每條消息包括:
***************** *************** ******************
* 2-byte LENGTH * * 1-byte TYPE * * N-byte PAYLOAD * , where N = (LENGTH-1).
***************** *************** ******************
根據TYPE
,我需要從PAYLOAD
的偏移量中讀取幾個字節,然后選擇接受或拒絕該消息。
我知道如何使用java.io.DataInputStream來做這種事情,但這似乎是java.nio.ByteBuffer的完美應用( 見這里! )。 但是,我需要一些幫助來設置它。
那么, 我如何使用ByteBuffer從我的gzip壓縮文件中讀取消息?
更新
我想我想看到的是一個代碼的骨架實現,可以讓我在正確的軌道上有效地使用ByteBuffer。 謝謝!
很抱歉不回答你的問題,但我不確定在這里使用ByteBuffer而不是DataInputStream有什么好處。 您可能希望將流通過GZIPInputStream來擴充數據。
GZIPInputStream gzipInput = new GZIPInputStream(yourInputStream);
DataInputStream dataInput = new DataInputStream(gzipInput);
使用ByteBuffer,您可能只是將從輸入流中讀取的字節包裝起來,沒有任何優勢。
為什么不使用像Mina或Netty這樣的庫,而不是為低級別的協議編寫所有內容? 它們可以為您提供相當容易實施的解決方案。
Netty http://www.jboss.org/netty
另外,我們在Red5中使用Mina,我們有很多實現者處理數百萬條消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.