Skip to content

Commit

Permalink
1.8修改如下
Browse files Browse the repository at this point in the history
1 新功能:
使用wiki方式改造用户指南,增加开发指南
客户端版本增加归属人
autoCreateSubscriptionGroup默认设置为false禁止自动订阅

2 bug修复和改进:
移除js和css,map引用,防止访问404
修复highcharts图表中tooltip被遮挡的bug
重构某些方法
优化机器监控状态列表获取慢的情况
滚动条优化
  • Loading branch information
yongfeigao committed Jul 8, 2019
1 parent f38f41d commit 4c94903
Show file tree
Hide file tree
Showing 166 changed files with 6,396 additions and 684 deletions.
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,55 +13,55 @@

* 下图简单描述了MQCloud大概的功能:

![mqcloud](mq-cloud/src/main/resources/static/img/intro/mqcloud.png)
![mqcloud](mq-cloud/src/main/resources/static/wiki/intro/img/mqcloud.png)


----------

## 特性概览
* 用户topic列表-不同用户看到不同的topic,管理员可以管理所有topic

![用户topic列表](mq-cloud/src/main/resources/static/img/intro/index.png)
![用户topic列表](mq-cloud/src/main/resources/static/wiki/intro/img/index.png)

* topic详情-分三块 基本信息,今日流程,拓扑

![topic详情](mq-cloud/src/main/resources/static/img/intro/topicDetail.png)
![topic详情](mq-cloud/src/main/resources/static/wiki/intro/img/topicDetail.png)

* 生产详情

![生产详情](mq-cloud/src/main/resources/static/img/intro/produceDetail2.png)
![生产详情](mq-cloud/src/main/resources/static/wiki/intro/img/produceDetail2.png)

* 消费详情

![消费详情](mq-cloud/src/main/resources/static/img/intro/consumeDetail2.png)
![消费详情](mq-cloud/src/main/resources/static/wiki/intro/img/consumeDetail2.png)

* 某个消费者具体的消费详情-可以查询重试消息和死消息

![消费详情](mq-cloud/src/main/resources/static/img/intro/consumeRetry.png)
![消费详情](mq-cloud/src/main/resources/static/wiki/intro/img/consumeRetry.png)

* 消息

![消息](mq-cloud/src/main/resources/static/img/intro/msgSearch.png)
![消息](mq-cloud/src/main/resources/static/wiki/intro/img/msgSearch.png)

* 消息消费情况

![msgconsume](mq-cloud/src/main/resources/static/img/intro/msgTrack.png)
![msgconsume](mq-cloud/src/main/resources/static/wiki/intro/img/msgTrack.png)

* 集群发现

![admin](mq-cloud/src/main/resources/static/img/intro/nameServer.png)
![admin](mq-cloud/src/main/resources/static/wiki/intro/img/nameServer.png)

* 集群管理

![admin](mq-cloud/src/main/resources/static/img/intro/cluster.png)
![admin](mq-cloud/src/main/resources/static/wiki/intro/img/cluster.png)

* 集群流量

![admin](mq-cloud/src/main/resources/static/img/intro/clusterTraffic.png)
![admin](mq-cloud/src/main/resources/static/wiki/intro/img/clusterTraffic.png)

* 创建broker

![addBroker](mq-cloud/src/main/resources/static/img/intro/addBroker.png)
![addBroker](mq-cloud/src/main/resources/static/wiki/intro/img/addBroker.png)

----------

Expand Down
2 changes: 1 addition & 1 deletion mq-client-common-open/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>com.sohu.tv</groupId>
<artifactId>mq</artifactId>
<version>1.7</version>
<version>1.8</version>
</parent>

<artifactId>mq-client-common-open</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
public class Version {

public static String get() {
return "1.7";
return "1.8";
}
}
2 changes: 1 addition & 1 deletion mq-client-open/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>com.sohu.tv</groupId>
<artifactId>mq</artifactId>
<version>1.7</version>
<version>1.8</version>
</parent>

<artifactId>mq-client-open</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion mq-cloud-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>com.sohu.tv</groupId>
<artifactId>mq</artifactId>
<version>1.7</version>
<version>1.8</version>
</parent>

<artifactId>mq-cloud-common</artifactId>
Expand Down
10 changes: 9 additions & 1 deletion mq-cloud/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.sohu.tv</groupId>
<artifactId>mq</artifactId>
<version>1.7</version>
<version>1.8</version>
</parent>

<artifactId>mq-cloud</artifactId>
Expand Down Expand Up @@ -121,6 +121,14 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>

<!--markdown to html-->
<dependency>
<groupId>com.vladsch.flexmark</groupId>
<artifactId>flexmark</artifactId>
<version>0.42.12</version>
</dependency>
<!--markdown to html end-->
</dependencies>

<build>
Expand Down
32 changes: 32 additions & 0 deletions mq-cloud/src/main/java/com/sohu/tv/mq/cloud/bo/ClientVersion.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package com.sohu.tv.mq.cloud.bo;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
* 客户端版本
* @Description:
* @author yongfeigao
* @date 2018年8月31日
*/
public class ClientVersion {
public static final int PRODUCER = 1;
public static final int CONSUMER = 2;
// topic name
private String topic;
// producer or consumer
Expand All @@ -18,6 +22,8 @@ public class ClientVersion {
private String version;
private Date createDate;
private Date updateTime;
// 客户端归属的用户
private Set<User> owners;
public String getTopic() {
return topic;
}
Expand Down Expand Up @@ -60,6 +66,32 @@ public Date getUpdateTime() {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getOwnersString() {
if(owners == null) {
return "";
}
StringBuilder sb = new StringBuilder();
for(User u : owners) {
sb.append(u.notBlankName());
sb.append(",");
}
if(sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
return sb.toString();
}
public boolean addOwner(User owner) {
if(owners == null) {
owners = new HashSet<>();
}
return owners.add(owner);
}
public Set<User> getOwners() {
return owners;
}
public void setOwners(Set<User> owners) {
this.owners = owners;
}
@Override
public String toString() {
return "ClientVersion [topic=" + topic + ", client=" + client + ", role=" + role + ", version=" + version
Expand Down
25 changes: 25 additions & 0 deletions mq-cloud/src/main/java/com/sohu/tv/mq/cloud/bo/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,31 @@ public String notBlankName(){
return getName();
}

@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((email == null) ? 0 : email.hashCode());
return result;
}

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (email == null) {
if (other.email != null)
return false;
} else if (!email.equals(other.email))
return false;
return true;
}

@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", email=" + email + ", mobile=" + mobile + ", type=" + type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public interface ServerStatusDao {
* @return @ServerInfo
*/
@Select("select * from server s left join server_stat ss on ss.ip = s.ip and ss.cdate=#{cdate} and ss.ctime in "
+ "(select max(ctime) from server_stat where ip = s.ip and cdate=#{cdate})")
+ "(select max(ctime) from server_stat where cdate=#{cdate})")
public List<ServerInfoExt> queryAllServer(@Param("cdate") String date);

/**
Expand Down
22 changes: 22 additions & 0 deletions mq-cloud/src/main/java/com/sohu/tv/mq/cloud/dao/UserDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,26 @@ public interface UserDao {
*/
@Update("update user set password=#{password} where id = #{uid}")
public Integer resetPassword(@Param("uid") long uid, @Param("password") String password);

/**
* 根据producer批量查询用户
* @param producerList
* @return List<User>
*/
@Select("<script>select u.name, u.email, up.producer password from user u, user_producer up "
+ "where u.id = up.uid and up.producer in "
+ "<foreach collection=\"producerList\" item=\"p\" separator=\",\" open=\"(\" close=\")\">#{p}</foreach>"
+ "</script>")
public List<User> selectByProducerList(@Param("producerList") Collection<String> producerList);

/**
* 根据consumer批量查询用户
* @param producerList
* @return List<User>
*/
@Select("<script>select u.name, u.email, c.name password from user u, consumer c, user_consumer uc "
+ "where u.id = uc.uid and uc.consumer_id = c.id and c.name in "
+ "<foreach collection=\"consumerList\" item=\"c\" separator=\",\" open=\"(\" close=\")\">#{c}</foreach>"
+ "</script>")
public List<User> selectByConsumerList(@Param("consumerList") Collection<String> consumerList);
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package com.sohu.tv.mq.cloud.service;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.sohu.tv.mq.cloud.bo.ClientVersion;
import com.sohu.tv.mq.cloud.bo.User;
import com.sohu.tv.mq.cloud.dao.ClientVersionDao;
import com.sohu.tv.mq.cloud.dao.UserDao;
import com.sohu.tv.mq.cloud.util.Result;

/**
Expand All @@ -25,6 +29,9 @@ public class ClientVersionService {
@Autowired
private ClientVersionDao clientVersionDao;

@Autowired
private UserDao userDao;

/**
* 保存客户端版本
* @param clientVersion
Expand All @@ -49,10 +56,67 @@ public Result<List<ClientVersion>> queryAll(){
List<ClientVersion> list = null;
try {
list = clientVersionDao.selectAll();
setOwners(list);
} catch (Exception e) {
logger.error("queryAll", e);
return Result.getDBErrorResult(e);
}
return Result.getResult(list);
}

/**
* 设置客户端归属的用户
* @param list
*/
private void setOwners(List<ClientVersion> list) {
setOwners(list, ClientVersion.PRODUCER);
setOwners(list, ClientVersion.CONSUMER);
}

/**
* 设置客户端归属的用户
* @param list
* @param role
*/
private void setOwners(List<ClientVersion> list, int role) {
List<String> clientList = getClientList(list, role);
if(CollectionUtils.isEmpty(clientList)) {
return;
}
List<User> userList = null;
if(ClientVersion.PRODUCER == role) {
userList = userDao.selectByProducerList(clientList);
} else {
userList = userDao.selectByConsumerList(clientList);
}
for(ClientVersion cv : list) {
if(cv.getRole() != role) {
continue;
}
for(User user : userList) {
if(cv.getClient().equals(user.getPassword())) {
cv.addOwner(user);
}
}
}
}

/**
* 获取producer/consumer名字列表
* @param list
* @param role
* @return
*/
private List<String> getClientList(List<ClientVersion> list, int role){
if(list == null) {
return null;
}
List<String> producerList = new ArrayList<>();
for(ClientVersion cv : list) {
if(role == cv.getRole()) {
producerList.add(cv.getClient());
}
}
return producerList;
}
}
Loading

0 comments on commit 4c94903

Please sign in to comment.