Skip to content

moleculer-go/moleculer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

87c001d Β· Apr 15, 2024
May 7, 2019
Apr 12, 2024
Feb 1, 2019
Sep 18, 2019
Jun 13, 2021
Sep 30, 2019
Jun 13, 2021
May 4, 2019
Mar 7, 2024
Apr 12, 2024
Mar 7, 2024
Mar 7, 2024
Sep 30, 2019
Mar 7, 2024
Apr 12, 2024
Apr 11, 2024
Jun 13, 2021
Nov 18, 2021
Mar 27, 2019
May 4, 2019
Feb 18, 2019
Jan 15, 2019
Apr 15, 2024
Apr 12, 2024
Apr 12, 2024
Apr 12, 2024

Repository files navigation

Moleculer Go

πŸš€ Progressive microservices framework for Go Moleculer Gopher Gopher

Inspired and compatible with Moleculer JS

Simple, fast, light and fun to develop with. Also easy, very easy to test ;)

Gitter Drone.io Build Status Go Report Card Coverage -> Coveralls Coverage -> Codecov

Get Started

Example

package main

import (
	"fmt"

	"github.com/moleculer-go/moleculer"
	"github.com/moleculer-go/moleculer/broker"
)

type MathService struct {
}

func (s MathService) Name() string {
	return "math"
}

func (s *MathService) Add(params moleculer.Payload) int {
	return params.Get("a").Int() + params.Get("b").Int()
}

func (s *MathService) Sub(a int, b int) int {
	return a - b
}

func main() {
	var bkr = broker.New(&moleculer.Config{LogLevel: "error"})
	bkr.Publish(&MathService{})
	bkr.Start()
	result := <-bkr.Call("math.add", map[string]int{
		"a": 10,
		"b": 130,
	})
	fmt.Println("result: ", result.Int())
	//$ result: 140
	bkr.Stop()
}

Features

  • Service Broker
  • Transit and Transport
  • Actions (request-reply)
  • Events
  • Mixins
  • Load balancing for actions and events (random round-robin)
  • Service registry & dynamic service discovery
  • Versioned services
  • Middlewares
  • NATS Streaming Transporter
  • TCP Transporter
  • JSON Serializer

Installation

$ go get github.com/moleculer-go/moleculer

Running examples

# simple moleculer db example with memory adaptor
$ go run github.com/moleculer-go/store/examples/users

# simple moleculer db example with Mongo adaptor
$ go run github.com/moleculer-go/store/examples/usersMongo

# simple moleculer db example with SQLite adaptor
$ go run github.com/moleculer-go/store/examples/usersSQLite

# complex moleculer db example with population of fields by other services
$ go run github.com/moleculer-go/store/examples/populates

Running tests

# integration tests require mongo, nats streaming and rabbitmq

# run mongo
docker run -d -p 27017:27017 mongo

# run nats-streaming
docker run -d -p 4222:4222 nats-streaming -mc 0


# run rabbitmq
docker run -d -p 5672:5672 rabbitmq

# running all tests
go test ./...
# or
ginkgo -r