package com.rabbitmq.pool;
import com.rabbitmq.client.Connection;
import java.util.Vector;
public class ConnectionWrapper {
private static final int INIT_SIZE = 36; //连接池初始化大小
private static final int MAX_SIZE = 1000; //连接池的最大值
private String username;
private String url;
private String password;
private long activeTime = 5000;
private Vector<MQConnection> connectPool = null;
public ConnectionWrapper(String url,String username,String password) {
this.url = url;
this.username = username;
this.password = password;
//初始化数据库的连接池
this.initPool();
}
private void initPool() {
if (null == connectPool) {
//创建数据库连接池
connectPool = new Vector<MQConnection>(INIT_SIZE);
//循环创建数据库连接
for (int i = 0; i < INIT_SIZE; i++) {
MQConnection db = new MQConnection(url, username, password);
connectPool.add(db);
}
}
}
public MQConnection createNewConectionTimer() {
//此方法的作用是:当获取连接的时候,如果连接不够了,才会执行这个方法创建连接
synchronized (connectPool) {
MQConnection db = new MQConnectionTimer(url, username, password, activeTime);
System.out.println("创建了MQConnectionTimer连接");
connectPool.add(db);
return db;
}
}
public Connection getConnection() {
synchronized (connectPool) {
Connection conn = null;
MQConnection db = null;
while (true) {
//循环查找空闲的连接,直到找到位置
for (int i = 0; i < connectPool.size(); i++) {
db = connectPool.get(i);
if (!db.isUsed()) {
//此连接处于空闲状态
if (db instanceof MQConnectionTimer) {
//System.out.println("取得的链接是MQConnectionTimer");
//如果db是MQConnectionTimer对象
MQConnectionTimer dbTimer = (MQConnectionTimer) db;
dbTimer.cacel(); //取消定时
conn = db.getConn();
db.setUsed(true); //设置此链接繁忙状态
return conn;
} else {
//System.out.println("取得的连接是MQConnection");
//如果db是MQConnection对象
conn = db.getConn();
db.setUsed(true); //设置此链接繁忙状态
return conn;
}
}
}
//如果没有找到空闲的连接,则创建连接
if (null == conn && connectPool.size() < this.MAX_SIZE) {
//如果连接池的大小小于要求的最大连接数,才可以创建
db = this.createNewConectionTimer();
conn = db.getConn();
db.setUsed(false);//新创建的连接设置为空闲状态
return conn;
}
//如果连接池的大小达到了最大连接数
if (null == conn && connectPool.size() == this.MAX_SIZE) {
//System.out.println("连接池满了");
try {
//进行等待,知道有链接进入空闲状态
connectPool.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public void releaseConnection(Connection conn) {
synchronized (connectPool) {
for (int i = 0; i < connectPool.size(); i++) {
MQConnection db = connectPool.get(i);
if (db instanceof MQConnectionTimer) {
MQConnectionTimer dbTimer = (MQConnectionTimer) db;
MQConTimerTask task = new MQConTimerTask(connectPool, dbTimer);
dbTimer.tick(task);
//System.out.println("释放了MQConnectionTimer的对象");
} else {
//固定的连接,一直存在
if (conn == db.getConn()) {
db.setUsed(false);
connectPool.notify();
//System.out.println("释放了MQConnection的对象");
break;
}
}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
RabbitMQ连接池+SpringBoot实现
共56个文件
xml:48个
java:6个
properties:1个
5星 · 超过95%的资源 需积分: 32 175 下载量 176 浏览量
2018-02-11
19:44:27
上传
评论 1
收藏 27KB RAR 举报
温馨提示
RabbitMQ连接池+SpringBoot实现。通过连接池实现将高效的管理RabbitMQ的Connection,并与springboot进行整合,实现消息发送,获取队列列表等功能。基于此可以进行更多功能的扩充。
资源推荐
资源详情
资源评论
收起资源包目录
rabbitmqpool.rar (56个子文件)
rabbitmqpool
src
test
java
main
resources
application.properties 271B
java
com
rabbitmq
pool
HtRabbitTemplate.java 4KB
ConnectionWrapper.java 5KB
MQConnectionTimer.java 925B
MQConTimerTask.java 858B
MQConnection.java 2KB
config
RabbitPoolConfig.java 1KB
.idea
libraries
Maven__org_springframework_boot_spring_boot_starter_logging_1_5_3_RELEASE.xml 748B
Maven__org_springframework_spring_expression_4_3_8_RELEASE.xml 658B
Maven__org_slf4j_slf4j_api_1_7_25.xml 513B
Maven__org_apache_httpcomponents_httpcore_4_4_6.xml 563B
Maven__org_springframework_spring_tx_4_3_8_RELEASE.xml 602B
Maven__org_springframework_spring_web_4_3_8_RELEASE.xml 609B
Maven__org_springframework_boot_spring_boot_1_5_3_RELEASE.xml 636B
Maven__org_springframework_amqp_spring_amqp_1_7_2_RELEASE.xml 636B
Maven__org_springframework_spring_context_4_3_8_RELEASE.xml 637B
Maven__commons_codec_commons_codec_1_10.xml 543B
Maven__org_springframework_spring_beans_4_3_8_RELEASE.xml 623B
Maven__com_fasterxml_classmate_1_3_3.xml 522B
Maven__com_rabbitmq_amqp_client_4_0_2.xml 532B
Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_3_RELEASE.xml 741B
Maven__org_springframework_amqp_spring_rabbit_1_7_2_RELEASE.xml 650B
Maven__com_rabbitmq_http_client_1_1_1_RELEASE.xml 588B
Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_14.xml 611B
Maven__ch_qos_logback_logback_classic_1_1_11.xml 575B
Maven__javax_validation_validation_api_1_1_0_Final.xml 611B
Maven__com_fasterxml_jackson_core_jackson_databind_2_8_8.xml 623B
Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml 548B
Maven__org_springframework_boot_spring_boot_starter_amqp_1_5_3_RELEASE.xml 727B
Maven__org_springframework_retry_spring_retry_1_2_0_RELEASE.xml 647B
Maven__org_yaml_snakeyaml_1_17.xml 495B
Maven__wapage_sub_server_wapage_utils_0_0_1_SNAPSHOT.xml 622B
Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_3_RELEASE.xml 734B
Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml 562B
Maven__org_springframework_boot_spring_boot_starter_web_1_5_3_RELEASE.xml 720B
Maven__org_jboss_logging_jboss_logging_3_3_1_Final.xml 608B
Maven__org_springframework_boot_spring_boot_starter_1_5_3_RELEASE.xml 692B
Maven__org_slf4j_jul_to_slf4j_1_7_25.xml 534B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml 644B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_14.xml 660B
Maven__com_fasterxml_jackson_core_jackson_core_2_8_8.xml 595B
Maven__org_springframework_spring_core_4_3_8_RELEASE.xml 616B
Maven__org_apache_httpcomponents_httpclient_4_5_3.xml 577B
Maven__ch_qos_logback_logback_core_1_1_11.xml 554B
Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_14.xml 625B
Maven__org_springframework_spring_messaging_4_3_8_RELEASE.xml 651B
Maven__org_springframework_spring_webmvc_4_3_8_RELEASE.xml 630B
Maven__org_springframework_spring_aop_4_3_8_RELEASE.xml 609B
Maven__org_hibernate_hibernate_validator_5_3_5_Final.xml 634B
misc.xml 439B
compiler.xml 636B
workspace.xml 30KB
encodings.xml 256B
inspectionProfiles
modules.xml 264B
rabbitmqpool.iml 6KB
pom.xml 1KB
共 56 条
- 1
资源评论
- wishhe3202019-08-04好不错哦,就是下载过了,不能再下载是什么鬼
- ly_cyclone2019-01-07代码很好,可以直接使用,java的maven项目
- hz99r2018-08-11还没有代码 希望是自己想要的资源
- huchunpeng2019-04-13代码很好,可以直接使用
黑猫guang
- 粉丝: 6
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功