本地持久化消息队列FQueue

  在Java开发中,我们在处理消息推送系统时经常会遇到,数据推送方和数据接收方处理速度不一致的问题。我们一般的解决方案是声明一个blockqueue来缓存要处理的数据,解决问题。 但这样有几个缺点,一是当队列中缓存较多数据时,我们重新发布项目队列中的数据就会丢失。二是数据过多占用大量内存导致系统崩溃;

  FQueue是一个高性能、基于磁盘持久存储的队列消息系统,可以很好的避免这两个问题。而且性能非常高,能达到数十万qps。低内存消耗。100-300M内存即可工作得很好。

本地持久化消息队列FQueue

  fQueue基本操作代码:

  新增FQueue.offer() 读取FQueue.poll(),测试示例如下:

public static void main(String[] args) throws Exception { 
    FQueue fQueue = new FQueue("/home/q/db/");  
    byte[] data = "www.javaseo.cn".getBytes(); 
    long offerStart = System.currentTimeMillis(); 
    for (int i = 0; i < 100000000; i++) {
        fQueue.offer(data); 
    } 
    long offerEnd = System.currentTimeMillis(); 
    System.out.println(100000000.0 / ((offerEnd - offerStart) / 1000) + "qps"); 
    long pollStart = System.currentTimeMillis(); 
    for (int i = 0; i < 100000000; i++) {
        fqueue.poll()
    }
    long poolEnd = System.currentTimeMillis(); 
    System.out.println(100000000.0 / ((pollStart - poolEnd) / 1000) + "qps"); 
    fQueue.close(); 
}


...条评论

加载更多评论