All Projects → nameko → Nameko Examples

nameko / Nameko Examples

Nameko microservices example

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Nameko Examples

Pitstop
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency.
Stars: ✭ 708 (+248.77%)
Mutual labels:  microservices, rabbitmq
Spring Cloud Stream Demo
Simple Event Driven Microservices with Spring Cloud Stream
Stars: ✭ 58 (-71.43%)
Mutual labels:  microservices, rabbitmq
Remit
RabbitMQ-backed microservices supporting RPC, pubsub, automatic service discovery and scaling with no code changes.
Stars: ✭ 24 (-88.18%)
Mutual labels:  microservices, rabbitmq
Netcoremicroservicessample
Sample using micro services in .NET Core 3.1 Focusing on clean code
Stars: ✭ 403 (+98.52%)
Mutual labels:  microservices, rabbitmq
Quiz
Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm
Stars: ✭ 100 (-50.74%)
Mutual labels:  microservices, rabbitmq
Nestjs
A collection of badass modules and utilities to help you level up your NestJS applications 🚀
Stars: ✭ 475 (+133.99%)
Mutual labels:  microservices, rabbitmq
Microservices Using Rabbitmq
Python & Go microservices on Docker, using RabbitMQ for asynchronous IPC
Stars: ✭ 51 (-74.88%)
Mutual labels:  microservices, rabbitmq
Tackle
💯 percent reliable microservice communication
Stars: ✭ 44 (-78.33%)
Mutual labels:  microservices, rabbitmq
Microwork
Microwork - simple creation of distributed scalable microservices in node.js with RabbitMQ
Stars: ✭ 97 (-52.22%)
Mutual labels:  microservices, rabbitmq
Dotnetcore Microservices Poc
Very simplified insurance sales system made in a microservices architecture using .NET Core
Stars: ✭ 1,304 (+542.36%)
Mutual labels:  microservices, rabbitmq
Hexagon
Hexagon is a microservices toolkit written in Kotlin. Its purpose is to ease the building of services (Web applications, APIs or queue consumers) that run inside a cloud platform.
Stars: ✭ 336 (+65.52%)
Mutual labels:  microservices, rabbitmq
Java Interview
At the beginning, it was the repository with questions from Java interviews. Currently, it's more like knowledge base with useful links.
Stars: ✭ 114 (-43.84%)
Mutual labels:  microservices, rabbitmq
Surging
Surging is a micro-service engine that provides a lightweight, high-performance, modular RPC request pipeline. The service engine supports http, TCP, WS,Grpc, Thrift,Mqtt, UDP, and DNS protocols. It uses ZooKeeper and Consul as a registry, and integrates it. Hash, random, polling, Fair Polling as a load balancing algorithm, built-in service gove…
Stars: ✭ 3,088 (+1421.18%)
Mutual labels:  microservices, rabbitmq
Practical.cleanarchitecture
Asp.Net Core 5 Clean Architecture (Microservices, Modular Monolith, Monolith) samples (+Blazor, Angular 11, React 17, Vue 2.6), Domain-Driven Design, CQRS, Event Sourcing, SOLID, Asp.Net Core Identity Custom Storage, Identity Server 4 Admin UI, Entity Framework Core, Selenium E2E Testing, SignalR Notification, Hangfire Tasks Scheduling, Health Checks, Security Headers, ...
Stars: ✭ 639 (+214.78%)
Mutual labels:  microservices, rabbitmq
Digital Restaurant
DDD. Event sourcing. CQRS. REST. Modular. Microservices. Kotlin. Spring. Axon platform. Apache Kafka. RabbitMQ
Stars: ✭ 222 (+9.36%)
Mutual labels:  microservices, rabbitmq
Rabbus
A tiny wrapper over amqp exchanges and queues 🚌 ✨
Stars: ✭ 86 (-57.64%)
Mutual labels:  microservices, rabbitmq
Dotnet Istanbul Microservices Demo
This is the demo application that i created for my talk 'Microservice Architecture & Implementation with Asp.Net Core' at Dotnet İstanbul Meetup Group.
Stars: ✭ 109 (-46.31%)
Mutual labels:  microservices, rabbitmq
Hippo
💨A well crafted go packages that help you build robust, reliable, maintainable microservices.
Stars: ✭ 134 (-33.99%)
Mutual labels:  microservices, rabbitmq
Shipcat
Deploy right meow! 🚢😾
Stars: ✭ 192 (-5.42%)
Mutual labels:  microservices
Nagios Plugins Rabbitmq
A set of nagios checks for RabbitMQ using the management interface
Stars: ✭ 194 (-4.43%)
Mutual labels:  rabbitmq

Nameko Examples

Airship Ltd

Airship Ltd

Buying and selling quality airships since 2012

CircleCI

Prerequisites

Overview

Repository structure

When developing Nameko services you have the freedom to organize your repo structure any way you want.

For this example we placed 3 Nameko services: Products, Orders and Gateway in one repository.

While possible, this is not necessarily the best practice. Aim to apply Domain Driven Design concepts and try to place only services that belong to the same bounded context in one repository e.g., Product (main service responsible for serving products) and Product Indexer (a service responsible for listening for product change events and indexing product data within search database).

Services

Services

Products Service

Responsible for storing and managing product information and exposing RPC Api that can be consumed by other services. This service is using Redis as it's data store. Example includes implementation of Nameko's DependencyProvider Storage which is used for talking to Redis.

Orders Service

Responsible for storing and managing orders information and exposing RPC Api that can be consumed by other services.

This service is using PostgreSQL database to persist order information.

Gateway Service

Is a service exposing HTTP Api to be used by external clients e.g., Web and Mobile Apps. It coordinates all incoming requests and composes responses based on data from underlying domain services.

Marshmallow is used for validating, serializing and deserializing complex Python objects to JSON and vice versa in all services.

Running examples

Quickest way to try out examples is to run them with Docker Compose

$ docker-compose up

Docker images for RabbitMQ, PostgreSQL and Redis will be automatically downloaded and their containers linked to example service containers.

When you see Connected to amqp:... it means services are up and running.

Gateway service with HTTP Api is listening on port 8003 and these endpoitns are available to play with:

Create Product

$ curl -XPOST -d '{"id": "the_odyssey", "title": "The Odyssey", "passenger_capacity": 101, "maximum_speed": 5, "in_stock": 10}' 'http://localhost:8003/products'

Get Product

$ curl 'http://localhost:8003/products/the_odyssey'

{
  "id": "the_odyssey",
  "title": "The Odyssey",
  "passenger_capacity": 101,
  "maximum_speed": 5,
  "in_stock": 10
}

Create Order

$ curl -XPOST -d '{"order_details": [{"product_id": "the_odyssey", "price": "100000.99", "quantity": 1}]}' 'http://localhost:8003/orders'

{"id": 1}

Get Order

$ curl 'http://localhost:8003/orders/1'

{
  "id": 1,
  "order_details": [
    {
      "id": 1,
      "quantity": 1,
      "product_id": "the_odyssey",
      "image": "http://www.example.com/airship/images/the_odyssey.jpg",
      "price": "100000.99",
      "product": {
        "maximum_speed": 5,
        "id": "the_odyssey",
        "title": "The Odyssey",
        "passenger_capacity": 101,
        "in_stock": 9
      }
    }
  ]
}

Running tests

Ensure RabbitMQ, PostgreSQL and Redis are running and config.yaml files for each service are configured correctly.

$ make coverage

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].