Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/x-punch/micro-kafka
A repository for go-micro kafka plugin
https://github.com/x-punch/micro-kafka
Last synced: about 1 month ago
JSON representation
A repository for go-micro kafka plugin
- Host: GitHub
- URL: https://github.com/x-punch/micro-kafka
- Owner: x-punch
- License: apache-2.0
- Created: 2019-03-13T06:32:33.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2021-10-27T02:52:44.000Z (about 3 years ago)
- Last Synced: 2024-06-21T18:13:07.925Z (6 months ago)
- Language: Go
- Size: 246 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
A repository for go-micro kafka plugin
# Overview
Micro tooling is built on a powerful pluggable architecture. Plugins can be swapped out with zero code changes.
This repository contains plugins only for kafka broker, try to avoid too much unused dependencies of micro/go-plugins.## Getting Started
* [Contents](#contents)
* [Usage](#usage)
* [Build Pattern](#build)## Contents
Contents of this repository:
| Directory | Description |
| --------- | ----------------------------------------------------------------|
| Broker | PubSub messaging; kafka |## Usage
Plugins can be added to go-micro in the following ways. By doing so they'll be available to set via command line args or environment variables.
Import the plugins in a Go program then call service.Init to parse the command line and environment variables.
```go
import (
"github.com/asim/go-micro/v3"
_ "github.com/x-punch/micro-kafka/v3"
_ "github.com/micro/go-plugins/registry/kubernetes"
_ "github.com/micro/go-plugins/transport/nats"
)func main() {
service := micro.NewService(
// Set service name
micro.Name("my.service"),
)// Parse CLI flags
service.Init()
}
```### Flags
Specify the plugins as flags
```shell
go run service.go --broker=kafka --registry=kubernetes --transport=nats
```### Env
Use env vars to specify the plugins
```
MICRO_BROKER=kafka \
MICRO_REGISTRY=kubernetes \
MICRO_TRANSPORT=nats \
go run service.go
```### Options
Import and set as options when creating a new service
```go
import (
"github.com/asim/go-micro/v3"
"github.com/asim/go-micro/plugins/registry/kubernetes/v3"
)func main() {
registry := kubernetes.NewRegistry() //a default to using env vars for master APIservice := micro.NewService(
// Set service name
micro.Name("my.service"),
// Set service registry
micro.Registry(registry),
)
}
```## Build
An anti-pattern is modifying the `main.go` file to include plugins. Best practice recommendation is to include
plugins in a separate file and rebuild with it included. This allows for automation of building plugins and
clean separation of concerns.Create file plugins.go
```go
package mainimport (
_ "github.com/x-punch/micro-kafka/v3"
_ "github.com/micro/go-plugins/registry/kubernetes"
_ "github.com/micro/go-plugins/transport/nats"
)
```Build with plugins.go
```shell
go build -o service main.go plugins.go
```Run with plugins
```shell
MICRO_BROKER=kafka \
MICRO_REGISTRY=kubernetes \
MICRO_TRANSPORT=nats \
service
```