go调用sarama实例

8 篇文章 1 订阅

本文实现go调用sarama库,实现创建Kafka topic,添加某账号的生产者权限以及消费者权限

1、创建topic:

import (
    "github.com/Shopify/sarama"
    "log"
)

func Create(topic *TopicInfo) error{
    log.Println("start create topic...")

    broker := sarama.NewBroker("localhost:9092")
    err := broker.Open(nil)
    if err != nil {
        log.Println("error in open the broker, ", err)
        return err
    }

    var topicDetail sarama.TopicDetail
    config := sarama.NewConfig()
    config.Version = sarama.V2_1_0_0  //kafka版本号
    config.Net.SASL.Enable = true
    config.Net.SASL.Mechanism = "PLAIN"
    config.Net.SASL.User = "admin"
    config.Net.SASL.Password = "admin"

    admin, err := sarama.NewClusterAdmin([]string{"localhost:9092"}, config)
    if err != nil {
        log.Fatal("error in create new cluster ... ", err)
        return err
    }

    err = admin.CreateTopic(topic.TopicName, &topicDetail, false)
    if err != nil {
        log.Println("error in create topic, ", err)
        return err
    }

    err = admin.Close()
    if err != nil {
        log.Fatal("error in close admin, ", err)
        return err
    }

    return
}

2、添加生产者权限:

import (
    "github.com/Shopify/sarama"
    "log"
)

func Producer(topic *TopicInfo) error{

    broker := sarama.NewBroker("localhost:9092")
    err := broker.Open(nil)
    if err != nil {
        log.Println("error in open the broker, ", err)
        return err
    }

    config := sarama.NewConfig()
    config.Version = sarama.V2_1_0_0
    config.Net.SASL.Enable = true
    config.Net.SASL.Mechanism = "PLAIN"
    config.Net.SASL.User = "admin"
    config.Net.SASL.Password = "admin"

    admin, err := sarama.NewClusterAdmin([]string{"localhost:9092"}, config)
    if err != nil {
        log.Fatal("error in create cluster admin ... ", err)
        return err
    }

    r := sarama.Resource{ResourceType: sarama.AclResourceTopic, ResourceName: topic.TopicName}
    a := sarama.Acl{Principal: "User:" + topic.Acc, Host: "*", Operation: sarama.AclOperationWrite, PermissionType: sarama.AclPermissionAllow}
	
    err = admin.CreateACL(r, a)
    log.Println("create acl finish")
    if err != nil {
        log.Println("error in create producer acl, ", err)
        return err
    }

    err = admin.Close()
    if err != nil {
        log.Fatal("error in close admin, ", err)
        return err
    }

    return nil
}

3、添加消费者权限:

import (
    "github.com/Shopify/sarama"
    "log"
)

func Consumer(topic *TopicInfo) error{
   
    broker := sarama.NewBroker("localhost:9092")
    err := broker.Open(nil)
    if err != nil {
        log.Println("error in open the broker, ", err)
        return err
    }

    config := sarama.NewConfig()
    config.Version = sarama.V2_1_0_0
    config.Net.SASL.Enable = true
    config.Net.SASL.Mechanism = "PLAIN"
    config.Net.SASL.User = "admin"
    config.Net.SASL.Password = "admin"

    admin, err := sarama.NewClusterAdmin([]string{"localhost:9092"}, config)
    if err != nil {
        log.Fatal("error in create new cluster ... ", err)
        return err
    }

    r := sarama.Resource{ResourceType: sarama.AclResourceTopic, ResourceName: topic.TopicName}
    a := sarama.Acl{Principal: "User"+topic.Acc, Host: "*", Operation: sarama.AclOperationRead, PermissionType: sarama.AclPermissionAllow}

    err = admin.CreateACL(r, a)
    log.Println("create acl finish")
    if err != nil {
        log.Println("error in create consumer acl, ", err)
        return err
    }

    err = admin.Close()
    if err != nil {
        log.Fatal("error in close admin, ", err)
        return err
    }

    return nil
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值