pulsaradmin

package
v0.19.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 25, 2026 License: Apache-2.0 Imports: 2 Imported by: 1

README

Pulsar Admin Go Library

Pulsar-Admin-Go is a Go library for Apache Pulsar. It provides a unified Go API for managing pulsar resources such as tenants, namespaces and topics, etc.

Motivation

Currently, many projects (e.g, terraform-provider-pulsar and pulsar-resources-operator) that need to manipulate the pulsar admin resources rely on the pulsarctl, which poses challenges for dependency management and versioning as we have to release a new pulsarctl to get updates. So we decoupled the pulsar admin related api from pulsarctl and created the pulsar-admin-go library based on it, which also provides a clearer perspective and maintainability from an architectural perspective.

Quickstart

Prerequisite
  • go1.18+

  • pulsar-admin-go in go.mod

    go get github.com/apache/pulsar-client-go
    
Manage pulsar tenants
  • List all tenants
import (
    "github.com/apache/pulsar-client-go/pulsaradmin"
)

func main() {
    cfg := &pulsaradmin.Config{}
    admin, err := pulsaradmin.NewClient(cfg)
    if err != nil {
        panic(err)
    }

    tenants, _ := admin.Tenants().List()
}
Manage pulsar namespaces
  • List all namespaces
import (
    "github.com/apache/pulsar-client-go/pulsaradmin"
)

func main() {
    cfg := &pulsaradmin.Config{}
    admin, err := pulsaradmin.NewClient(cfg)
    if err != nil {
        panic(err)
    }

    namespaces, _ := admin.Namespaces().GetNamespaces("public")
}
  • Create a new namespace
import (
    "github.com/apache/pulsar-client-go/pulsaradmin"
)

func main() {
    cfg := &pulsaradmin.Config{}
    admin, err := pulsaradmin.NewClient(cfg)
    if err != nil {
        panic(err)
    }

    admin.Namespaces().CreateNamespace("public/dev")
}
Manage pulsar topics
  • Create a topic

import (
    "github.com/apache/pulsar-client-go/pulsaradmin"
    "github.com/apache/pulsar-client-go/pulsaradmin/pkg/utils"
)

func main() {
    cfg := &pulsaradmin.Config{}
    admin, err := pulsaradmin.NewClient(cfg)
    if err != nil {
        panic(err)
    }

    topic, _ := utils.GetTopicName("public/dev/topic")

    admin.Topics().Create(*topic, 3)
}
  • Read scoped topic policies
import (
    "context"
    "github.com/apache/pulsar-client-go/pulsaradmin"
    "github.com/apache/pulsar-client-go/pulsaradmin/pkg/utils"
)

func main() {
    cfg := &pulsaradmin.Config{}
    admin, err := pulsaradmin.NewClient(cfg)
    if err != nil {
        panic(err)
    }

    topic, _ := utils.GetTopicName("persistent://public/default/example")

    localPolicies, err := pulsaradmin.TopicPoliciesOf(admin, false)
    if err != nil {
        panic(err)
    }

    ttl, err := localPolicies.GetMessageTTL(context.Background(), *topic, false)
    if err != nil {
        panic(err)
    }
    if ttl == nil {
        return
    }

    _, _ = pulsaradmin.TopicPoliciesOf(admin, true)
}

Contributing

Contributions are warmly welcomed and greatly appreciated! The project follows the typical GitHub pull request model. See CONTRIBUTING.md for more details. Before starting any work, please either comment on an existing issue, or file a new one.

License

Licensed under the Apache License, Version 2.0.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// NewClient returns a new admin Client for operating pulsar resources
	NewClient = admin.New

	// TopicPoliciesOf returns a scoped TopicPolicies client from an admin client when available.
	TopicPoliciesOf = admin.TopicPoliciesOf
)

Functions

This section is empty.

Types

type Client

type Client = admin.Client

Client contains all admin interfaces for operating pulsar resources

type Config

type Config = config.Config

Config are the arguments for creating a new admin Client

type TopicPolicies added in v0.19.0

type TopicPolicies = admin.TopicPolicies

TopicPolicies contains scoped admin interfaces for topic-level policies.

type TopicPoliciesProvider added in v0.19.0

type TopicPoliciesProvider = admin.TopicPoliciesProvider

TopicPoliciesProvider provides scoped TopicPolicies instances.

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL