All Projects → matryer → Vice

matryer / Vice

Licence: apache-2.0
Go channels at horizontal scale (powered by message queues)

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Labels

Projects that are alternatives of or similar to Vice

threadpool
Golang simple thread pool implementation
Stars: ✭ 68 (-94.7%)
Mutual labels:  channels
Magic Cards
🎩 Queue music, play movies, or trigger events with RFID cards.
Stars: ✭ 372 (-71.01%)
Mutual labels:  channels
Laravel Fcm
🌐 A Laravel package to send Push Notifications to one or many devices of the user.
Stars: ✭ 56 (-95.64%)
Mutual labels:  channels
channelsmultiplexer
Channels v3 Multiplerxer
Stars: ✭ 25 (-98.05%)
Mutual labels:  channels
Newschannel
新闻频道栏/滚动栏(网易新闻,新浪新闻,搜狐新闻,今日头条,聚划算,腾讯视频,优酷等类的频道栏),支持小红点标识 && 懒加载 && 缓存 && 排序 && 增删等
Stars: ✭ 256 (-80.05%)
Mutual labels:  channels
Goodies
Useful stuff missing from .NET for example duck typing, CSP channels, caching, money, typed ids...
Stars: ✭ 11 (-99.14%)
Mutual labels:  channels
Async-Channel
Python async multi-task communication library. Used by OctoBot project.
Stars: ✭ 13 (-98.99%)
Mutual labels:  channels
Chan
Pure C implementation of Go channels.
Stars: ✭ 1,208 (-5.85%)
Mutual labels:  channels
Awesome Telegram Chats
Stars: ✭ 347 (-72.95%)
Mutual labels:  channels
Go Apns2
Go package for HTTP/2 Apple Push Notification Service.
Stars: ✭ 53 (-95.87%)
Mutual labels:  channels
async-oneshot
A fast, small, full-featured, no-std compatible oneshot channel
Stars: ✭ 55 (-95.71%)
Mutual labels:  channels
postage-rs
The feature-rich, portable async channel library
Stars: ✭ 122 (-90.49%)
Mutual labels:  channels
Lunch With Channels
Stars: ✭ 32 (-97.51%)
Mutual labels:  channels
awesome-dotnet-async
A curated list of awesome articles and resources to learning and practicing about async, threading, and channels in .Net platform. 😉
Stars: ✭ 84 (-93.45%)
Mutual labels:  channels
Tinker app
Android热更新Tinker + 多渠道打包 + 加固的流程详解demo
Stars: ✭ 67 (-94.78%)
Mutual labels:  channels
lifeline-rs
A dependency injection library for message-based applications
Stars: ✭ 32 (-97.51%)
Mutual labels:  channels
Channels
Golang channel helpers and special types
Stars: ✭ 664 (-48.25%)
Mutual labels:  channels
Go Concurrency
This repos has lots of Go concurrency, goroutine and channel usage and best practice examples
Stars: ✭ 84 (-93.45%)
Mutual labels:  channels
Weechat Autosort
Automatically keep your buffers sorted.
Stars: ✭ 69 (-94.62%)
Mutual labels:  channels
Mortgageblockchainfabric
Mortgage Processing App using Hyperledger Fabric Blockchain. Uses channels for privacy and access, and restricts read/write previleges through endorsement policies
Stars: ✭ 45 (-96.49%)
Mutual labels:  channels

Go channels at horizontal scale Build Status

  • Use Go channels transparently over a messaging queue technology of your choice (Currently NATS, Redis or NSQ, Amazon SQS)
  • Swap vice.Transport to change underlying queueing technologies transparently
  • Write idiomatic Go code instead of learning queue specific APIs
  • Develop against in-memory implementation before putting it into the wild
  • Independent unit tests (no need for running queue technology)

PROJECT STATUS: v1 released

Usage

This code receives names on the |names| queue, and sends greetings on the |greetings| queue:

// get a Go channel that will receive messages on the
// |names| queue
names := transport.Receive("names")

// get a Go channel that will send messages on the
// |greetings| queue
greetings := transport.Send("greetings")

// respond to |names| messages with |greetings|
for name := range names {
	greetings <- []byte("Hello " + string(name))
}
  • The code above is illustrative, be sure to read the design patterns
  • Always stop the Transport, some technologies register and deregister their interest in the queues (this means trapping signals and gracefully shutting down services before exiting)
  • Use Send and Receive methods to get channels, which you can then use as normal
  • Be sure to always handle the ErrChan() error channel to make sure the underlying queue technology is healthy

Quick start guide

  • Write your services with unit tests using normal Go channels (see our design patterns)
  • Install Vice with go get github.com/matryer/vice/...
  • Select a messaging queue technology
  • Build a command to run your service

Read the blog post: Introducing vice: Go channels across many machines

Acknowledgements

Special thanks go to David Hernandez, Jason Hancock and Piotr Rojek for their support on this project.

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].