diff --git a/dubbokeeper-storage/mongodb-storage/pom.xml b/dubbokeeper-storage/mongodb-storage/pom.xml
index 6f4e0586..04e3b548 100644
--- a/dubbokeeper-storage/mongodb-storage/pom.xml
+++ b/dubbokeeper-storage/mongodb-storage/pom.xml
@@ -51,5 +51,15 @@
mongo-java-driver
${mongodb.version}
+
+ mysql
+ mysql-connector-java
+ 5.1.25
+
+
+ commons-dbutils
+ commons-dbutils
+ 1.6
+
\ No newline at end of file
diff --git a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/ApplicationStatisticsStorage.java b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/ApplicationStatisticsStorage.java
index e7e88fa8..8358f743 100644
--- a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/ApplicationStatisticsStorage.java
+++ b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/ApplicationStatisticsStorage.java
@@ -11,6 +11,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.transaction.support.TransactionTemplate;
+import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -45,6 +46,14 @@ public class ApplicationStatisticsStorage extends Thread{
private static final int WRITE_INTERVAL= Integer.parseInt(ConfigUtils.getProperty("mongodb.commit.interval", "100"));
+
+ public ApplicationStatisticsStorage(ApplicationDao applicationDao,
+ StatisticsDao statisticsDao,
+ String application,
+ int type){
+ this(applicationDao,statisticsDao,application,type,false);
+ }
+
public ApplicationStatisticsStorage(ApplicationDao applicationDao,
StatisticsDao statisticsDao,
String applicationName,
diff --git a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/MongoDBStatisticsStorage.java b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/MongoDBStatisticsStorage.java
index fc7522a2..ed7aee3c 100644
--- a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/MongoDBStatisticsStorage.java
+++ b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/MongoDBStatisticsStorage.java
@@ -19,6 +19,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.zookeeper.data.Stat;
import org.bson.Document;
+import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
@@ -42,15 +43,28 @@
* @fix:
* @description: 描述功能
*/
-public class MongoDBStatisticsStorage implements StatisticsStorage {
+public class MongoDBStatisticsStorage implements StatisticsStorage,InitializingBean {
private static final ConcurrentHashMap APPLICATION_STORAGES = new ConcurrentHashMap();
- @Autowired
private ApplicationDao applicationDao;
- @Autowired
private StatisticsDao statisticsDao;
+ public ApplicationDao getApplicationDao() {
+ return applicationDao;
+ }
+
+ public void setApplicationDao(ApplicationDao applicationDao) {
+ this.applicationDao = applicationDao;
+ }
+
+ public StatisticsDao getStatisticsDao() {
+ return statisticsDao;
+ }
+
+ public void setStatisticsDao(StatisticsDao statisticsDao) {
+ this.statisticsDao = statisticsDao;
+ }
@Override
public void storeStatistics(Statistics statistics) {
@@ -109,8 +123,15 @@ public Collection queryApplications() {
@Override
public ApplicationInfo queryApplicationInfo(String application, long start, long end) {
- //TODO fix
- return null;
+ ApplicationStatisticsStorage applicationStatisticsStorage = APPLICATION_STORAGES.get(application);
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.setApplicationName(applicationStatisticsStorage.getApplication());
+ applicationInfo.setApplicationType(applicationStatisticsStorage.getType());
+ applicationInfo.setMaxConcurrent(statisticsDao.queryMaxItemByService(application,null,"concurrent",start,end).getConcurrent());
+ applicationInfo.setMaxElapsed(statisticsDao.queryMaxItemByService(application,null,"elapsed",start,end).getElapsed());
+ applicationInfo.setMaxFault(statisticsDao.queryMaxItemByService(application,null,"failureCount",start,end).getFailureCount());
+ applicationInfo.setMaxSuccess(statisticsDao.queryMaxItemByService(application,null,"successCount",start,end).getSuccessCount());
+ return applicationInfo;
}
@Override
@@ -211,4 +232,17 @@ private void convertItem(BaseItem item,Statistics statistics){
item.setRemoteType(statistics.getRemoteType().toString());
}
+ @Override
+ public void afterPropertiesSet() throws Exception {
+ Collection apps = applicationDao.findAll();
+ for(ApplicationInfo app:apps){
+ ApplicationStatisticsStorage applicationStatisticsStorage = new ApplicationStatisticsStorage(applicationDao,statisticsDao,
+ app.getApplicationName(),
+ app.getApplicationType());
+ APPLICATION_STORAGES.put(app.getApplicationName(),applicationStatisticsStorage);
+ applicationStatisticsStorage.start();
+ LOGGER.info("start application [{}] storage",app.getApplicationName());
+ }
+ }
+
}
diff --git a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/ApplicationDao.java b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/ApplicationDao.java
index 3bad1cbb..7e64e6b7 100644
--- a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/ApplicationDao.java
+++ b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/ApplicationDao.java
@@ -17,9 +17,15 @@ public class ApplicationDao {
private static final String APPLICATION_COLLECTIONS = "application";
- @Autowired
private MongoTemplate mongoTemplate;
+ public MongoTemplate getMongoTemplate() {
+ return mongoTemplate;
+ }
+
+ public void setMongoTemplate(MongoTemplate mongoTemplate) {
+ this.mongoTemplate = mongoTemplate;
+ }
public void updateAppType(String application, int type){
Query query = new Query(
diff --git a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/StatisticsDao.java b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/StatisticsDao.java
index 4e557673..4f99468f 100644
--- a/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/StatisticsDao.java
+++ b/dubbokeeper-storage/mongodb-storage/src/main/java/com/dubboclub/dk/storage/mongodb/dao/StatisticsDao.java
@@ -21,9 +21,16 @@ public class StatisticsDao {
private static final String STATISTICS_COLLECTIONS = "statistics";
- @Autowired
private MongoTemplate mongoTemplate;
+ public MongoTemplate getMongoTemplate() {
+ return mongoTemplate;
+ }
+
+ public void setMongoTemplate(MongoTemplate mongoTemplate) {
+ this.mongoTemplate = mongoTemplate;
+ }
+
public void addOne(String application,Statistics statistics){
mongoTemplate.save(statistics,String.format("%s_%s",STATISTICS_COLLECTIONS,application));
}