消费详情

This commit is contained in:
许晓东
2021-10-12 20:27:18 +08:00
parent 338101396f
commit fc73182740
6 changed files with 246 additions and 6 deletions

View File

@@ -84,6 +84,10 @@ export const KafkaConsumerApi = {
url: "/consumer/member",
method: "get",
},
getConsumerDetail: {
url: "/consumer/detail",
method: "get",
},
};
export const KafkaClusterApi = {

View File

@@ -0,0 +1,121 @@
<template>
<a-modal
:title="'消费组: ' + group"
:visible="show"
:width="1800"
:mask="false"
:destroyOnClose="true"
:footer="null"
:maskClosable="false"
@cancel="handleCancel"
>
<div>
<a-spin :spinning="loading">
<div v-for="(v, k) in data" :key="k">
<h4>Topic: {{ k }} | 积压: {{ v.lag }}</h4>
<hr />
<a-table
:columns="columns"
:data-source="v.data"
bordered
:rowKey="(record) => record.topic + record.partition"
>
<span slot="clientId" slot-scope="text, record">
<span v-if="text"> {{ text }}@{{ record.host }} </span>
</span>
</a-table>
</div>
</a-spin>
</div>
</a-modal>
</template>
<script>
import request from "@/utils/request";
import { KafkaConsumerApi } from "@/utils/api";
import notification from "ant-design-vue/es/notification";
export default {
name: "ConsumerDetail",
props: {
group: {
type: String,
default: "",
},
visible: {
type: Boolean,
default: false,
},
},
data() {
return {
columns: columns,
show: this.visible,
data: [],
loading: false,
};
},
watch: {
visible(v) {
this.show = v;
if (this.show) {
this.getConsumerDetail();
}
},
},
methods: {
getConsumerDetail() {
this.loading = true;
request({
url: KafkaConsumerApi.getConsumerDetail.url + "?groupId=" + this.group,
method: KafkaConsumerApi.getConsumerDetail.method,
}).then((res) => {
this.loading = false;
if (res.code != 0) {
notification.error({
message: "error",
description: res.msg,
});
} else {
this.data = res.data;
}
});
},
handleCancel() {
this.data = [];
this.$emit("closeConsumerDetailDialog", {});
},
},
};
const columns = [
{
title: "分区",
dataIndex: "partition",
key: "partition",
},
{
title: "客户端",
dataIndex: "clientId",
key: "clientId",
scopedSlots: { customRender: "clientId" },
},
{
title: "日志位点",
dataIndex: "logEndOffset",
key: "logEndOffset",
},
{
title: "消费位点",
dataIndex: "consumerOffset",
key: "consumerOffset",
},
{
title: "积压",
dataIndex: "lag",
key: "lag",
},
];
</script>
<style scoped></style>

View File

@@ -61,7 +61,7 @@
</a-form>
</div>
<div class="operation-row-button">
<a-button type="primary" @click="handleReset">新增/更新</a-button>
<!-- <a-button type="primary" @click="handleReset">新增/更新</a-button>-->
</div>
<a-table
:columns="columns"
@@ -91,6 +91,13 @@
>删除
</a-button>
</a-popconfirm>
<a-button
size="small"
href="javascript:;"
class="operation-btn"
@click="openConsumerDetailDialog(record.groupId)"
>消费详情
</a-button>
</div>
</a-table>
<Member
@@ -98,6 +105,12 @@
:group="selectDetail.resourceName"
@closeConsumerMemberDialog="closeConsumerDialog"
></Member>
<ConsumerDetail
:visible="showConsumerDetailDialog"
:group="selectDetail.resourceName"
@closeConsumerDetailDialog="closeConsumerDetailDialog"
>
</ConsumerDetail>
</div>
</a-spin>
</div>
@@ -108,10 +121,11 @@ import request from "@/utils/request";
import { KafkaConsumerApi } from "@/utils/api";
import notification from "ant-design-vue/es/notification";
import Member from "@/views/group/Member";
import ConsumerDetail from "@/views/group/ConsumerDetail";
export default {
name: "ConsumerGroup",
components: { Member },
components: { Member, ConsumerDetail },
data() {
return {
queryParam: {},
@@ -130,6 +144,7 @@ export default {
},
loading: false,
showConsumerGroupDialog: false,
showConsumerDetailDialog: false,
};
},
methods: {
@@ -179,6 +194,13 @@ export default {
closeConsumerDialog() {
this.showConsumerGroupDialog = false;
},
openConsumerDetailDialog(groupId) {
this.showConsumerDetailDialog = true;
this.selectDetail.resourceName = groupId;
},
closeConsumerDetailDialog() {
this.showConsumerDetailDialog = false;
},
},
created() {
this.getConsumerGroupList();