protoc-gen-go-micro/vendor/github.com/go-kit/kit/examples/shipping
2017-03-31 18:01:58 +02:00
..
booking Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
cargo Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
handling Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
inmem Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
inspection Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
location Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
routing Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
tracking Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
voyage Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
main.go Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00
README.md Moved to google.golang.org/genproto/googleapis/api/annotations 2017-03-31 18:01:58 +02:00

shipping

This example demonstrates a more real-world application consisting of multiple services.

Description

The implementation is based on the container shipping domain from the Domain Driven Design book by Eric Evans, which was originally implemented in Java but has since been ported to Go. This example is a somewhat stripped down version to demonstrate the use of Go kit. The original Go application is maintained separately and accompanied by an AngularJS application as well as a mock routing service.

Organization

The application consists of three application services, booking, handling and tracking. Each of these is an individual Go kit service as seen in previous examples.

  • booking - used by the shipping company to book and route cargos.
  • handling - used by our staff around the world to register whenever the cargo has been received, loaded etc.
  • tracking - used by the customer to track the cargo along the route

There are also a few pure domain packages that contain some intricate business-logic. They provide domain objects and services that are used by each application service to provide interesting use-cases for the user.

inmem contains in-memory implementations for the repositories found in the domain packages.

The routing package provides a domain service that is used to query an external application for possible routes.

Contributing

As with all Go kit examples you are more than welcome to contribute. If you do however, please consider contributing back to the original project as well.