本文整理汇总了Golang中github.com/funkygao/gafka/zk.ZkZone.Conn方法的典型用法代码示例。如果您正苦于以下问题:Golang ZkZone.Conn方法的具体用法?Golang ZkZone.Conn怎么用?Golang ZkZone.Conn使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/funkygao/gafka/zk.ZkZone
的用法示例。
在下文中一共展示了ZkZone.Conn方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: cleanupStaleConsumerGroups
func (this *Consumers) cleanupStaleConsumerGroups(zkzone *zk.ZkZone, clusterPattern string) {
// what consumer groups are safe to delete?
// 1. not online
// 2. have no offsets
this.Ui.Output(color.Blue(zkzone.Name()))
zkzone.ForSortedClusters(func(zkcluster *zk.ZkCluster) {
if !patternMatched(zkcluster.Name(), clusterPattern) {
return
}
this.Ui.Output(strings.Repeat(" ", 4) + zkcluster.Name())
consumerGroups := zkcluster.ConsumerGroups()
for group, consumers := range consumerGroups {
if len(consumers) > 0 {
// this consumer group is online
continue
}
if !patternMatched(group, this.groupPattern) {
continue
}
if !strings.HasPrefix(group, "console-consumer-") {
path := zkcluster.ConsumerGroupOffsetPath(group)
_, _, err := zkzone.Conn().Children(path)
if err == nil {
this.Ui.Warn(fmt.Sprintf("%s not empty, unsafe to cleanup", path))
continue
}
if err != gozk.ErrNoNode {
// should never happen
swallow(err)
}
}
// have no offsets, safe to delete
if this.confirmYes {
yes, err := this.Ui.Ask(fmt.Sprintf("confirm to remove cluster[%s] consumer group: %s? [Y/n]",
zkcluster.Name(), group))
swallow(err)
if strings.ToLower(yes) == "n" {
this.Ui.Info(fmt.Sprintf("%s skipped", group))
continue
}
} else {
yes, err := this.Ui.Ask(fmt.Sprintf("confirm to remove cluster[%s] consumer group: %s? [y/N]",
zkcluster.Name(), group))
swallow(err)
if strings.ToLower(yes) != "y" {
this.Ui.Info(fmt.Sprintf("%s skipped", group))
continue
}
}
// do delete this consumer group
zkzone.DeleteRecursive(zkcluster.ConsumerGroupRoot(group))
this.Ui.Info(fmt.Sprintf("%s deleted", group))
}
})
}