Skip to content

Probably the most elegant ctrip apollo client in golang. This library has no third-party dependency.

License

Notifications You must be signed in to change notification settings

hyperjiang/lunar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Hyper
Oct 11, 2024
a348be6 · Oct 11, 2024

History

33 Commits
Oct 11, 2024
Apr 5, 2020
Jun 15, 2022
Apr 3, 2020
Aug 16, 2023
Jun 15, 2022
Aug 16, 2023
Aug 16, 2023
Jun 15, 2022
Aug 16, 2023
Aug 16, 2023
Aug 16, 2023
Aug 16, 2023
Apr 10, 2020
Apr 5, 2020
Apr 4, 2020
Aug 22, 2021
Aug 22, 2021
Apr 10, 2020
Apr 10, 2020
Apr 10, 2020
Apr 10, 2020

Repository files navigation

lunar

GoDoc CI codecov Release

Probably the most elegant ctrip apollo client in golang. This library has no third-party dependency.

Ctrip Apollo: https://github.com/ctripcorp/apollo

Default settings of lunar:

  • default namespace is application
  • default server is localhost:8080
  • default http client timeout is 90s

Require golang version >= 1.16 after v0.6.0

Usage

import "github.com/hyperjiang/lunar"

key := "foo"

app := lunar.New("myAppID", lunar.WithServer("localhost:8080"))

// get value of key in default namespace
app.GetValue(key)

// get value of key in namespace ns
app.GetValueInNamespace(key, "ns")

// get all the items in default namespace
app.GetItems()

// get all the items in namespace ns
app.GetItemsInNamespace("ns")

// get the content of ns namespace, if the format of ns is properties then will return json string
app.GetContent("ns")

// it will fetch items from apollo directly without reading local cache
app.GetNamespaceFromApollo("ns")

// watch changes of given namespaces
watchChan, errChan := app.Watch("ns1", "ns2", ...)

for {
	select {
	case n := <-watchChan:
		fmt.Println(n)
	case <-errChan:
		app.Stop() // stop watcher
		return
	}
}

Logging

lunar does not write logs by default, if you want to see logs for debugging, you can replace it with any logger which implements lunar.Logger interface.

lunar also provide a simple logger lunar.Printf which writes to stdout:

app := lunar.New("myAppID", lunar.WithServer("localhost:8080"), lunar.WithLogger(lunar.Printf))

Or you can use UseLogger method:

app.UseLogger(lunar.Printf)

Caching

lunar use memory cache by default, you can replace it with any cache which implements lunar.Cache interface.

lunar also provide a file cache lunar.FileCache which use files for caching:

app := lunar.New("myAppID")

app.UseCache(lunar.NewFileCache("myAppID", "/tmp"))

Enable Access Key

Starting from v1.6.0, apollo supports access key feature, you can use WithAccessKeySecret to set the secret:

app := lunar.New(
	"myAppID",
	lunar.WithServer("localhost:8080"),
	lunar.WithAccessKeySecret("mySecret"),
)

About

Probably the most elegant ctrip apollo client in golang. This library has no third-party dependency.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages