Giter VIP home page Giter VIP logo

client-server-golang-sqs's Introduction

Client Server with SQS and golang

Multi-threaded client-server demo with Go

What's implemented
  • Multi-threaded server with multiple workers listening to message queue and spawning goroutines in parallel when commands are received. Workers count, polling intervals and other important things are configurable and have meaningful defaults
  • Single threaded client (no limitations on how many copies could be started in parallel)
  • Amazon SQS queue between server and clients
  • sync.Map to store all key-value pairs. It should suit the task better than standard map[string]interface{} wrapped with sync.RWMutex
  • Logging of debug/errors to the screen (stdout) and logging of all server actions to the specified log file
How to build

On Linux run in terminal

make

You also might need to manually run go mod tidy to install project dependencies locally.

How to start?

You should have an AWS account and working SQS queue. Please create .env from env.sample and type all needed credentials there.

Then make to compile and start server:

./server

You could check the server output with command like this:

tail -f server.log

How to use?

You could send commands with client app:

./client add {key} {value} - adds {key: value} pair to server memory

./client delete {key} - deletes key pair from server

./client get {key} - shows the key and corresponding value if it was set

./client all - shows all key-pairs stored to the server

Examples to run on terminal :

./client add key1 key2

./client get key1

./client all

./client delete key1

client-server-golang-sqs's People

Contributors

ariel1985 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.