matryer / Vice
Licence: apache-2.0
Go channels at horizontal scale (powered by message queues)
Stars: ✭ 1,283
Labels
Projects that are alternatives of or similar to Vice
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
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
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
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
lifeline-rs
A dependency injection library for message-based applications
Stars: ✭ 32 (-97.51%)
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
- 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
andReceive
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].