请求超时时间

This commit is contained in:
许晓东
2021-11-13 23:11:24 +08:00
parent 07f6158871
commit 0f493b0751
7 changed files with 21 additions and 19 deletions

View File

@@ -3,7 +3,7 @@
为了开发的省事,没有多语言支持,只支持中文展示。 为了开发的省事,没有多语言支持,只支持中文展示。
用过rocketmq-console吧前端展示风格跟那个有点类似。 用过rocketmq-console吧前端展示风格跟那个有点类似。
## 安装包下载 ## 安装包下载
* 点击下载:[kafka-console-ui.tar.gz](http://43.128.31.53/kafka-console-ui.tar.gz) * 点击下载:[kafka-console-ui.tar.gz](http://43.128.31.53/kafka-console-ui.tar.gz) 或 [kafka-console-ui.zip](http://43.128.31.53/kafka-console-ui.zip)
* 参考下面的打包部署,下载源码重新打包 * 参考下面的打包部署,下载源码重新打包
## 功能支持 ## 功能支持
* 集群信息 * 集群信息
@@ -25,7 +25,7 @@
# 打包、部署 # 打包、部署
## 打包 ## 打包
环境要求 环境要求
* maven 3+ * maven 3.6+
* jdk 8 * jdk 8
* git * git
``` ```
@@ -90,3 +90,5 @@ java -jar target/kafka-console-ui.jar
3. 打开idea的Project Structure(Settings) -> Libraries 添加scala sdk然后选择本地下载的scala 2.13的目录,确定添加进来 3. 打开idea的Project Structure(Settings) -> Libraries 添加scala sdk然后选择本地下载的scala 2.13的目录,确定添加进来
## 前端 ## 前端
前端代码在工程的ui目录下找个前端开发的ide打开进行开发即可。 前端代码在工程的ui目录下找个前端开发的ide打开进行开发即可。
## 注意
前后分离,直接启动后端如果未编译前端代码是没有前端页面的,可以先打包进行编译`sh package.sh`然后再用idea启动或者前端部分单独启动

View File

@@ -8,7 +8,7 @@ kafka:
config: config:
# kafka broker地址多个以逗号分隔 # kafka broker地址多个以逗号分隔
bootstrap-server: 'localhost:9092' bootstrap-server: 'localhost:9092'
request-timeout-ms: 60000 request-timeout-ms: 5000
# 服务端是否启用acl如果不启用下面的所有配置都忽略即可只用配置上面的Kafka集群地址就行了 # 服务端是否启用acl如果不启用下面的所有配置都忽略即可只用配置上面的Kafka集群地址就行了
enable-acl: false enable-acl: false
# 只支持2种安全协议SASL_PLAINTEXT和PLAINTEXT启用acl则设置为SASL_PLAINTEXT不启用acl不需关心这个配置 # 只支持2种安全协议SASL_PLAINTEXT和PLAINTEXT启用acl则设置为SASL_PLAINTEXT不启用acl不需关心这个配置
@@ -17,7 +17,7 @@ kafka:
# 超级管理员用户名在broker上已经配置为超级管理员 # 超级管理员用户名在broker上已经配置为超级管理员
admin-username: admin admin-username: admin
# 超级管理员密码 # 超级管理员密码
admin-password: admin!QAZ admin-password: admin
# 启动自动创建配置的超级管理员用户 # 启动自动创建配置的超级管理员用户
admin-create: false admin-create: false
# broker连接的zk地址如果启动自动创建配置的超级管理员用户则必须配置否则忽略 # broker连接的zk地址如果启动自动创建配置的超级管理员用户则必须配置否则忽略
@@ -35,7 +35,7 @@ spring:
username: kafka username: kafka
password: 1234567890 password: 1234567890
schema: classpath:db/schema-h2.sql schema: classpath:db/schema-h2.sql
# data: classpath:db/data-h2.sql # data: classpath:db/data-h2.sqldata.dir
initialization-mode: always initialization-mode: always
h2: h2:
console: console:

View File

@@ -21,15 +21,15 @@ class ClusterConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConf
withAdminClientAndCatchError(admin => { withAdminClientAndCatchError(admin => {
val clusterResult: DescribeClusterResult = admin.describeCluster() val clusterResult: DescribeClusterResult = admin.describeCluster()
val clusterInfo = new ClusterInfo val clusterInfo = new ClusterInfo
clusterInfo.setClusterId(clusterResult.clusterId().get(3000, TimeUnit.MILLISECONDS)) clusterInfo.setClusterId(clusterResult.clusterId().get(timeoutMs, TimeUnit.MILLISECONDS))
val acls = clusterResult.authorizedOperations().get(3000, TimeUnit.MILLISECONDS) val acls = clusterResult.authorizedOperations().get(timeoutMs, TimeUnit.MILLISECONDS)
if (acls != null) { if (acls != null) {
clusterInfo.setAuthorizedOperations(acls.asScala.map(_.toString).toSet[String].asJava) clusterInfo.setAuthorizedOperations(acls.asScala.map(_.toString).toSet[String].asJava)
} else { } else {
clusterInfo.setAuthorizedOperations(Collections.emptySet()) clusterInfo.setAuthorizedOperations(Collections.emptySet())
} }
clusterInfo.setNodes(clusterResult.nodes().get(3000, TimeUnit.MILLISECONDS).asScala.map(BrokerNode.fromNode(_)).toSet[BrokerNode].asJava) clusterInfo.setNodes(clusterResult.nodes().get(timeoutMs, TimeUnit.MILLISECONDS).asScala.map(BrokerNode.fromNode(_)).toSet[BrokerNode].asJava)
val id = clusterResult.controller().get(3000, TimeUnit.MILLISECONDS).id() val id = clusterResult.controller().get(timeoutMs, TimeUnit.MILLISECONDS).id()
clusterInfo.getNodes.asScala.foreach(n => { clusterInfo.getNodes.asScala.foreach(n => {
if (n.getId == id) { if (n.getId == id) {
n.setController(true) n.setController(true)

View File

@@ -58,7 +58,7 @@ class KafkaAclConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaCon
def addAcl(acls: List[AclBinding]): Boolean = { def addAcl(acls: List[AclBinding]): Boolean = {
withAdminClient(adminClient => { withAdminClient(adminClient => {
try { try {
adminClient.createAcls(acls).all().get(3000, TimeUnit.MILLISECONDS) adminClient.createAcls(acls).all().get(timeoutMs, TimeUnit.MILLISECONDS)
true true
} catch { } catch {
case e: Exception => log.error("addAcl error", e) case e: Exception => log.error("addAcl error", e)
@@ -100,7 +100,7 @@ class KafkaAclConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaCon
def deleteAcl(entry: AclEntry, allResource: Boolean, allPrincipal: Boolean, allOperation: Boolean): Boolean = { def deleteAcl(entry: AclEntry, allResource: Boolean, allPrincipal: Boolean, allOperation: Boolean): Boolean = {
withAdminClient(adminClient => { withAdminClient(adminClient => {
try { try {
val result = adminClient.deleteAcls(Collections.singleton(entry.toAclBindingFilter(allResource, allPrincipal, allOperation))).all().get(3000, TimeUnit.MILLISECONDS) val result = adminClient.deleteAcls(Collections.singleton(entry.toAclBindingFilter(allResource, allPrincipal, allOperation))).all().get(timeoutMs, TimeUnit.MILLISECONDS)
log.info("delete acl: {}", result) log.info("delete acl: {}", result)
true true
} catch { } catch {
@@ -113,7 +113,7 @@ class KafkaAclConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaCon
def deleteAcl(filters: util.Collection[AclBindingFilter]): Boolean = { def deleteAcl(filters: util.Collection[AclBindingFilter]): Boolean = {
withAdminClient(adminClient => { withAdminClient(adminClient => {
try { try {
val result = adminClient.deleteAcls(filters).all().get(3000, TimeUnit.MILLISECONDS) val result = adminClient.deleteAcls(filters).all().get(timeoutMs, TimeUnit.MILLISECONDS)
log.info("delete acl: {}", result) log.info("delete acl: {}", result)
true true
} catch { } catch {

View File

@@ -41,7 +41,7 @@ class KafkaConfigConsole(config: KafkaConfig) extends KafkaConsole(config: Kafka
adminClient.alterUserScramCredentials(util.Arrays.asList( adminClient.alterUserScramCredentials(util.Arrays.asList(
new UserScramCredentialUpsertion(name, new UserScramCredentialUpsertion(name,
new ScramCredentialInfo(ScramMechanism.fromMechanismName(config.getSaslMechanism), defaultIterations), pass))) new ScramCredentialInfo(ScramMechanism.fromMechanismName(config.getSaslMechanism), defaultIterations), pass)))
.all().get(3000, TimeUnit.MILLISECONDS) .all().get(timeoutMs, TimeUnit.MILLISECONDS)
true true
} catch { } catch {
case ex: Exception => log.error("addOrUpdateUser error", ex) case ex: Exception => log.error("addOrUpdateUser error", ex)
@@ -98,13 +98,13 @@ class KafkaConfigConsole(config: KafkaConfig) extends KafkaConsole(config: Kafka
try { try {
// adminClient.alterUserScramCredentials(util.Arrays.asList( // adminClient.alterUserScramCredentials(util.Arrays.asList(
// new UserScramCredentialDeletion(name, ScramMechanism.fromMechanismName(config.getSaslMechanism)))) // new UserScramCredentialDeletion(name, ScramMechanism.fromMechanismName(config.getSaslMechanism))))
// .all().get(3000, TimeUnit.MILLISECONDS) // .all().get(timeoutMs, TimeUnit.MILLISECONDS)
// all delete // all delete
val userDetail = getUserDetailList(util.Collections.singletonList(name)) val userDetail = getUserDetailList(util.Collections.singletonList(name))
userDetail.values().asScala.foreach(u => { userDetail.values().asScala.foreach(u => {
adminClient.alterUserScramCredentials(u.credentialInfos().asScala.map(s => new UserScramCredentialDeletion(u.name(), s.mechanism()) adminClient.alterUserScramCredentials(u.credentialInfos().asScala.map(s => new UserScramCredentialDeletion(u.name(), s.mechanism())
.asInstanceOf[UserScramCredentialAlteration]).toList.asJava) .asInstanceOf[UserScramCredentialAlteration]).toList.asJava)
.all().get(3000, TimeUnit.MILLISECONDS) .all().get(timeoutMs, TimeUnit.MILLISECONDS)
}) })
(true, null) (true, null)

View File

@@ -19,7 +19,7 @@ import org.apache.kafka.common.utils.Time
* */ * */
class KafkaConsole(config: KafkaConfig) { class KafkaConsole(config: KafkaConfig) {
protected val timeoutMs: Int = 3000 protected val timeoutMs: Int = config.getRequestTimeoutMs
protected def withAdminClient(f: Admin => Any): Any = { protected def withAdminClient(f: Admin => Any): Any = {

View File

@@ -25,7 +25,7 @@ class TopicConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfig
*/ */
def getTopicNameList(internal: Boolean = true): Set[String] = { def getTopicNameList(internal: Boolean = true): Set[String] = {
withAdminClientAndCatchError(admin => admin.listTopics(new ListTopicsOptions().listInternal(internal)).names() withAdminClientAndCatchError(admin => admin.listTopics(new ListTopicsOptions().listInternal(internal)).names()
.get(3000, TimeUnit.MILLISECONDS), .get(timeoutMs, TimeUnit.MILLISECONDS),
e => { e => {
log.error("listTopics error.", e) log.error("listTopics error.", e)
Collections.emptySet() Collections.emptySet()
@@ -39,7 +39,7 @@ class TopicConsole(config: KafkaConfig) extends KafkaConsole(config: KafkaConfig
*/ */
def getInternalTopicNameList(): Set[String] = { def getInternalTopicNameList(): Set[String] = {
withAdminClientAndCatchError(admin => admin.listTopics(new ListTopicsOptions().listInternal(true)).listings() withAdminClientAndCatchError(admin => admin.listTopics(new ListTopicsOptions().listInternal(true)).listings()
.get(3000, TimeUnit.MILLISECONDS).asScala.filter(_.isInternal).map(_.name()).toSet[String].asJava, .get(timeoutMs, TimeUnit.MILLISECONDS).asScala.filter(_.isInternal).map(_.name()).toSet[String].asJava,
e => { e => {
log.error("listInternalTopics error.", e) log.error("listInternalTopics error.", e)
Collections.emptySet() Collections.emptySet()