91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-04-03
  • 語言: Java
  • 標簽: RabbitMQ??連接池??java??

資源簡介

RabbitMQ客戶連接池的Java實現。我們剛開始也是采用這種方式來實現的,但做壓力測試時,發現這種每次新建Connection和新建Channel是非常耗時的,在大并發下,一般都要8毫秒左右,慢的話,好多都是幾十毫秒。因此我們創建了Java的RabbitMQ的連接池對象。

資源截圖

代碼片段和文件信息

package?com.eduwest.pool;

import?java.io.IOException;??
import?java.io.InputStream;??
import?java.net.URL;
import?java.util.Properties;??
import?java.util.Vector;

import?com.rabbitmq.client.Connection;
import?com.rabbitmq.client.ConnectionFactory;

public?class?ConnectionWrapper
{
private?static?ConnectionWrapper?factory?=?null;???

private?static?final?int?INIT_SIZE?=?20;?//連接池初始化大小??

private?static?final?int?MAX_SIZE?=?1000;?//連接池的最大值??

private?String?driver;??

private?String?url;??

private?String?username;??

private?String?password;??

private?long?activeTime?=?5000;??

private?Vector?connectPool?=?null;//存放數據庫連接的向量??

public?ConnectionWrapper()?{??
??//初始化連接的配置??
??this.initProperties();??
??//初始化數據庫的連接池??
??this.initPool();??
}??

private?void?initProperties()?{??
??Properties?dbPro?=?new?Properties();??
??InputStream?input?=?this.getClass().getResourceAsStream(“mqconnection.properties“);?
??try?{??
??????dbPro.load(input);?
??????this.url?=?dbPro.getProperty(“url“);??
??????this.username?=?dbPro.getProperty(“username“);??
??????this.password?=?dbPro.getProperty(“password“);?
?????
??}?catch?(Exception?e)?{??
??????e.printStackTrace();??
??}??
}??

private?void?initPool()?{??
??if(null?==?connectPool)?{??
??????//創建數據庫連接池??
??????connectPool?=?new?Vector(INIT_SIZE);??
??????//循環創建數據庫連接??
??????for?(int?i?=?0;?i???????????MQConnection?db?=?new?MQConnection(url?username?password);??
??????????System.out.println(“創建了MQConnection連接“);??
??????????connectPool.add(db);??
??????}??
??}??
}??

public?static?synchronized?ConnectionWrapper?getConnectionWrapper()?{??
??if(null?==?factory)?{??
??????factory?=?new?ConnectionWrapper();??
??}??
??return?factory;??
}??

public?MQConnection?createNewConectionTimer()?{??
??//此方法的作用是:當獲取連接的時候,如果連接不夠了,才會執行這個方法創建連接??
??synchronized?(connectPool)?{??
??????MQConnection?db?=?new?MQConnectionTimer(driver?url?username?password?activeTime);??
??????System.out.println(“創建了MQConnectionTimer連接“);??
??????connectPool.add(db);??
??????return?db;??
??}??
}??

public?Connection?getConnection()?{??
??System.out.println(“此時連接池中還有的連接數:?“?+?connectPool.size());??
??synchronized?(connectPool)?{??
??????Connection?conn?=?null;??
??????MQConnection?db?=?null;??
??????while(true)?{??
??????????//循環查找空閑的連接,直到找到位置??
??????????for?(int?i?=?0;?i???????????????db?=?connectPool.get(i);??
??????????????if(!db.isUsed())?{??
??????????????????System.out.println(“有空閑的連接“);??
??????????????????//此連接處于空閑狀態??
??????????????????if(db?instanceof?MQConnectionTimer)?{??
??????????????????????//System.out.println(“取得的鏈接是MQConnectionTimer“);??
??????????????????????//如果db是MQConnectionTimer對象??
??????????????????????MQConnectionTimer?dbTimer?=?(MQConnectionTimer)db;??
??????????????????????dbTimer.cacel();?//取消定時??
??????????????????????conn?=db.getConn();?
??

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????5424??2017-11-22?17:44??ConnectionWrapper.java

?????文件???????1952??2017-11-21?11:03??MQConnection.java

?????文件?????????54??2017-11-22?15:40??mqconnection.properties

?????文件????????935??2017-11-21?11:02??MQConnectionTimer.java

?????文件????????856??2017-11-21?10:50??MQConTimerTask.java

?????文件???????2727??2017-11-22?17:52??RabbitMQServer.java

-----------?---------??----------?-----??----

????????????????11948????????????????????6


評論

共有 條評論