簡體   English   中英

使用Java的ByteBuffer讀取數百萬條消息

[英]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這樣的庫,而不是為低級別的協議編寫所有內容? 它們可以為您提供相當容易實施的解決方案。

米娜http://mina.apache.org/

Netty http://www.jboss.org/netty

另外,我們在Red5中使用Mina,我們有很多實現者處理數百萬條消息。

暫無
暫無

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

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